LeetCode 455. 分发饼干
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int j = 0;
for (int i = 0; i < s.size(); i++){
if (j < g.size() && g[j] <= s[i]){
j++;
}
}
return j;
}
};
LeetCode 376. 摆动序列
贪心思路:让峰值保持更峰
其中还要考虑各种平坡情况
只有遇到坡度改变的情况才更新preDiff
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if (nums.size() <= 1){
return nums.size();
}
int curDiff = 0;
int preDiff = 0;
int result = 1; //初始化为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;
}
};
LeetCode 53. 最大子数组和
贪心
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int result = INT_MIN;
int count = 0;
for (int i = 0; i < nums.size(); i++){
count += nums[i];
if (count > result){
result = count;
}
if (count < 0){
count = 0;
}
}
return result
}
};
动态规划
class Solution {
public:
int maxSubArray(vector<int>& nums) {
vector<int> dp(nums.size(), 0);
dp[0] = nums[0];
int result = dp[0];
for (int i = 1; i < nums.size(); i++){
dp[i] = max(dp[i - 1] + nums[i], nums[i]);
if (dp[i] > result){
result = dp[i];
}
}
return result;
}
};
result = dp[i];
}
}
return result;
}
};