美文网首页
Leetcode455、孩子分糖果

Leetcode455、孩子分糖果

作者: 残剑天下论 | 来源:发表于2020-05-16 17:58 被阅读0次

贪心规律

需求因子数组 g = [2, 5, 9, 9, 10, 15];糖果大小数组 s = [1, 3, 6, 8, 20]。 核心目标:让更多孩子得到满足,有如下规律:

1.某个糖果如果不能满足某个孩子,则该糖果也一定不能满足需求因子更大的孩子。 如,
糖果1(s = 1)不能满足孩子1(g = 2),则不能满足孩子2、孩子3、...、孩子7;
糖果2(s = 3)不能满足孩子2(g = 5),则不能满足孩子3、孩子4、...、孩子7;
...

2.某个孩子可以用更小的糖果满足,则没必要用更大糖果满足,因为可以保留更大的糖果
满足需求因子更大的孩子。(贪心!) 如,
孩子1(g = 2),可以被糖果2(s = 3)满足,则没必要用糖果3、糖果4、糖果5满足; 孩子2(g = 5),可以被糖果3(s = 6)满足,则没必要用糖果4、糖果5满足;
...

3.孩子的需求因子更小则其更容易被满足,故优先从需求因子小的孩子尝试,用某个糖果 满足一个较大需求因子的孩子或满足一个较小需求因子的孩子效果是一样的(最终满足的总量 不变)。(贪心!)

思路

代码

#include <iostream>
#include <vector>

using namespace std;

class Solution
{
public:
    int findContentChildren(vector<int>& g, vector<int>& s)
    {
        // 对两个数组排序
        sort(g.begin(), g.end());
        sort(s.begin(), s.end());

        int i = 0;  // g index
        int j = 0;  // s index
        while (i < g.size() && j < s.size())
        {
            if (g[i] <= s[j])
                i ++;
            j ++;
        }
        return i;
    }
};

int main()
{
    Solution S;

    vector<int> g;
    vector<int> s;
    int child[] = {2, 5, 9, 9, 10, 15};
    int cookie[] = {1, 3, 6, 8, 20};

    for (int i = 0; i < 6; i++)
    {
        g.push_back(child[i]);
    }

    for (int i = 0; i < 5; i++)
    {
        s.push_back(cookie[i]);
    }

    int res = S.findContentChildren(g, s);
    cout << res << endl;
    return 0;
}

相关文章

  • 分糖果

    给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟...

  • 分糖果

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/distri...

  • 女侠教学日记(二)

    分糖果 堂妹的孩子订婚,给了一袋糖果。除了分给每个老师几块外,其余的全都拿到班级分给...

  • Python 算法 2022-06-23

    #分糖果问题(贪心算法) 描述:一群孩子做游戏,现在请你根据游戏得分来发糖果,要求如下: 每个孩子不管得分多少,起...

  • NOIP训练营内部试题-分糖果

    NOIP训练营内部试题-分糖果 摘自:清北学堂NOIP训练营试题T2 题目:分糖果 分糖果 (candy) Tim...

  • 分糖果问题

    分糖果问题

  • 分糖果 II

    排排坐,分糖果。 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友...

  • 分糖果 II

    题目: 题目的理解: 从举例中明白根据n * (n + 1) / 2 然后和candies比较,获取一共可以分多少...

  • 分糖果问题

    描述 一群孩子做游戏,现在请你根据游戏得分来发糖果,要求如下: 每个孩子不管得分多少,起码分到一个糖果。 任意两个...

  • 1103-分糖果II

    分糖果II 题目 排排坐,分糖果。 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_pe...

网友评论

      本文标题:Leetcode455、孩子分糖果

      本文链接:https://www.haomeiwen.com/subject/xhbsohtx.html