Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[LeetCode] 455. 分发饼干 #87

Open
Animenzzzz opened this issue Sep 12, 2019 · 0 comments
Open

[LeetCode] 455. 分发饼干 #87

Animenzzzz opened this issue Sep 12, 2019 · 0 comments

Comments

@Animenzzzz
Copy link
Owner

题目描述:

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

注意:

你可以假设胃口值为正。
一个小朋友最多只能拥有一块饼干。

示例 1:

输入: [1,2,3], [1,1]

输出: 1

解释: 
你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。
虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。
所以你应该输出1。

示例 2:

输入: [1,2], [1,2,3]

输出: 2

解释: 
你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。
你拥有的饼干数量和尺寸都足以让所有孩子满足。
所以你应该输出2.

解题思路:首先对数据进行排序。s如果大于等于g,说明可以满足,结果+1,g的下标+1;然后s继续往后遍历

C++解题:

class Solution {
public:
    int findContentChildren(vector<int>& g, vector<int>& s) {
        // g:7,8,9,10
        // s:5,6,7,8
        int res = 0,g_index = 0;
        if(!s.size()) return 0;
        sort(g.begin(),g.end());
        sort(s.begin(),s.end());
        for(int ss:s){
            if(ss >= g[g_index]){
                g_index++;res++;
            }
            if(g_index >= g.size()) break;
        }
        return res;
    }
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant