455. 分发饼干
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int i = 0, j = 0;//一个指向g数组,一个指向s数组
while(i < g.size() && j < s.size())
{
if(s[j] >= g[i])//如果饼干满足孩子的胃口值
{//ij同时后移
j++;
i++;
}
else j++;//满足不了孩子那就饼干下标后移
}
return i;
}
};
先排序,贪心+双指针
376. 摆动序列
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if(nums.size() <= 1) return nums.size();
int preDiffer = 0;
int ret = 1;
for(int index = 1; index < nums.size(); index++)
{
//当前index与上一个数字的差值
int curDiffer = nums[index] - nums[index - 1];
//如果相等,那么这个index与前面的构不成摆动序列
if(curDiffer == 0) continue;
else
{
if(ret == 1)
{
ret++;
preDiffer = curDiffer;
}//特殊情况当ret = 1也就是说之前的摆动序列只有一个数字,只要differ不是0,那么这两个数字就是摆动序列了
else
{
if(curDiffer * preDiffer < 0)//是摆动序列
{
ret++;
preDiffer = curDiffer;
}
}
}
}
return ret;
}
};
注意 特殊情况是当摆动序列个数ret只有1个时,而不是下标index = 1时