455.分发饼干
排序,以饼干为中心,从大到小算
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 count = 0;for(int i=g.size()-1; i>=0; i--){if(index>=0 && s[index]>=g[i]){count++;index--;}}return count;}
};
376. 摆动序列
山峰山谷,用贪心时间复杂度O(N),prediff>=0/<=0是为了把0引入,开始计算,不然后面没法算。
class Solution {
public:// 山峰山谷int wiggleMaxLength(vector<int>& nums) {if(nums.size()<=1){return nums.size();}int prediff = 0;int curdiff = 0;int result = 1;for(int i=0;i<nums.size()-1;i++){curdiff = nums[i+1]-nums[i];if(prediff<=0 && curdiff>0 || prediff>=0 && curdiff<0){result++;prediff = curdiff;}} return result;}
};
53. 最大子序和
前面所有的最大和如果<0, 只能给后面带来降低,所以舍弃,从0开始。
class Solution {
public:int maxSubArray(vector<int>& nums) {int result = INT32_MIN;int sum = 0;for(int i=0;i<nums.size();i++){sum += nums[i];if(sum > result){result = sum;}if(sum < 0){sum = 0;}}return result;}
};