leetcode 455. 分发饼干

2023.7.27

        leetcode 455. 分发饼干_第1张图片

         今天起福州要刮台风了,不过还是在宿舍坚持每日一题。 

         今天开始刷的系列属于贪心算法系列。本题是贪心算法的一个入门题。

        贪心算法总体思路就是先找局部最优,在一步步的找出全局最优。  本题很明显全局最优就是 需要尽可能多投喂更多的孩子。 局部最优就是先将大饼干喂给胃口大的,尽可能先把大胃口的孩子满足,此时for循环需要遍历胃口。 下面看代码:

class Solution {
public:
    int findContentChildren(vector& g, vector& s) {
        int ans = 0;
        int index = s.size()-1;
        sort(g.begin(),g.end());
        sort(s.begin(),s.end());
        for(int i=g.size()-1; i>=0; i--)
        {
            if(index>=0 && s[index] >= g[i])
            {
                ans++;
                index--;
            }
        }
        return ans;
    }
};

        另一种思路是尽可能将小饼干给喂出去,此时for循环遍历的是饼干。 值得注意的是s数组有可能为0,也就是可能没有饼干,一个孩子也没法喂,直接返回0。 下面看代码:

class Solution {
public:
    int findContentChildren(vector& g, vector& s) {
        int ans = 0;
        int index = 0;
        sort(g.begin(),g.end());
        sort(s.begin(),s.end());
        if(s.empty()) return 0;
        for(int i=0; i

你可能感兴趣的:(leetcode专栏,leetcode,算法,职场和发展,c++,数据结构)