首页 力扣-分发饼干 & 摆动序列
文章
取消

力扣-分发饼干 & 摆动序列

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时

本文由作者按照 CC BY 4.0 进行授权