小胃口用小饼干,那就是先遍历饼干;如果反过来,大胃口用大饼干,那么就要先遍历胃口,因为我们排好序后,如果当前胃口对应的当前大饼干都不能满足,那么剩下的所有饼干就都不能满足,如果遍历的是饼干,就会出现一个大胃口将所有饼干都判为不合适的情况 AC代码:
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int count = 0;
for (int i = 0, j = 0; i < s.size() && j < g.size(); i++) {
if (s[i] >= g[j]) {
count++;
j++;
}
}
return count;
}
};
AC代码:
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
int ans = 1;
int prevdiff = 0;
int currdiff = 0;
for (int i = 0; i < nums.size() - 1; i++) {
currdiff = nums[i + 1] - nums[i];
if ((prevdiff <= 0 && currdiff > 0) ||
(prevdiff >= 0 && currdiff < 0)) {
ans++;
prevdiff = currdiff;
}
}
return ans;
}
};
注意保存最大值的变量初始化的数值,还有题目所给的nums中的值的范围是否包含负数,如果有负数,那maxSum就应该初始化为一个尽可能小的数
代码如下:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int sum = 0;
int maxSum = INT_MIN;
for (int i = 0; i < nums.size(); i++) {
sum += nums[i];
maxSum = max(maxSum, sum);
if (sum <= 0) {
sum = 0;
}
}
return maxSum;
}
};