3.4 补贪心,回溯明天再说……
● 455.分发饼干
● 376. 摆动序列
● 53. 最大子序和
455. 分发饼干
这个显然从大的开始分配就行
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
if(s.size() == 0) return 0;
sort(g.begin(), g.end(), greater<>());
sort(s.begin(), s.end(), greater<>());
int ans = 0;
for(int i = 0, j = 0; i < g.size() && j < s.size(); ++i) {
if(s[j] >= g[i]) {
j++;
ans++;
}
}
return ans;
}
};
376. 摆动序列
比较有意思一个题
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if(nums.size() < 2) return nums.size();
int len = 1;
int cur = 0;
int pre = 0;
for(int i = 1; i < nums.size(); ++i) {
cur = nums[i - 1] - nums[i];
if((pre <= 0 && cur > 0) || (pre >= 0 && cur < 0)) {
len++;
pre = cur;
}
}
return len;
}
};
53. 最大子序和
动态规划典型题目,也可以贪心
注意 if(tmp > res)... 要放在前面,这样可以避免例如 -1 这种用例输出0
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int tmp = 0;
int res = INT_MIN;
for(int i = 0; i < nums.size(); ++i) {
tmp += nums[i];
if(tmp > res) res = tmp;
if(tmp <= 0) tmp = 0;
}
return res;
}
};