代码随想录第22天|
class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int index = s.size() - 1; // 饼干数组的下标int result = 0;for (int i = g.size() - 1; i >= 0; i--) { // 遍历胃口if (index >= 0 && s[index] >= g[i]) { // 遍历饼干result++;index--;}}return result;}
};
思路:贪心算法 把大饼干先给胃口大的小孩 外层遍历一定要是小孩的胃口 因为小孩的胃口会一直减少 早晚有胃口小的小孩会迟到食物 但如果外层是大饼干 大饼干越来越小 小孩食量一直是最大 就会错误
class Solution {
public:int wiggleMaxLength(vector<int>& nums) {int n = nums.size();if (n < 2) {return n;}int prevdiff = nums[1] - nums[0];int ret = prevdiff != 0 ? 2 : 1;for (int i = 2; i < n; i++) {int diff = nums[i] - nums[i - 1];if ((diff > 0 && prevdiff <= 0) || (diff < 0 && prevdiff >= 0)) {ret++;prevdiff = diff;}}return ret;}
};
思路:没太理解需要二刷 大致理解的是遇见峰谷就+1
class Solution {
public:int maxSubArray(vector<int>& nums) {int res=INT_MIN;int cur=0;for(int i=0;i<nums.size();i++){cur+=nums[i];if(cur>res){res=cur;}if(cur<0) cur=0;}return res;}
};
思路:大概是 你设置res 和cur cur>res就更新 保证res永远是最大的值 如果当前cur小于0一定是副作用 从0开始计数