455. 分发饼干
class Solution {
// 最佳适用法
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int s_index = s.size() - 1;
int count = 0;
for (int i = g.size() - 1; i >= 0 && s_index >=0; i--) {
if (s[s_index] >= g[i]) {
s_index--;
count++;
}
}
return count;
}
};
376. 摆动序列
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if (nums.size() <= 1) return nums.size();
int count = 1; // 默认最右侧有一个峰值,处理右边界
int pre_diff = 0;
int cur_diff = 0;
for (int i = 0; i < nums.size() - 1; i++) {
cur_diff = nums[i + 1] - nums[i];
// 变换时才更新pre_diff
if ((pre_diff >= 0 && cur_diff < 0) || (pre_diff <= 0 && cur_diff > 0)) {
count++;
pre_diff = cur_diff;
}
}
return count;
}
};
53. 最大子数组和
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int ret_ = INT_MIN;
int count = 0;
for (int i = 0; i < nums.size(); i++) {
count += nums[i];
ret_ = count > ret_ ? count : ret_;
if (count <= 0) count = 0;
}
return ret_;
}
};