讨论/《高频算法实战》 - 分发饼干/
《高频算法实战》 - 分发饼干
共 9 个回复

1 <= g.length <= 30000
我能有三万个孩子???

5
class Solution {
    public int findContentChildren(int[] g, int[] s) {
        if (s.length == 0) return 0;
        Arrays.sort(g);
        Arrays.sort(s);
        if (s[s.length - 1] < g[0]) return 0;
        if (s[0] >= g[g.length - 1]) return Math.min(s.length, g.length);
        int i = 0, j = 0;
        while (i < g.length && j < s.length) {
            if (s[j] >= g[i]) {
                i++;
            }
            j++;
        }
        return i;
    }
}
3
class Solution {
public:
    int findContentChildren(vector<int>& g, vector<int>& s) {
        int pos = 0, i;

        sort(s.begin(), s.end());
        sort(g.begin(), g.end());
        for(i = 0; i < s.size(); i ++){
            if(pos < g.size() && s[i] >= g[pos])
                ++ pos;
        }
        return pos;
    }
};
1

排序,比较即可

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

c++

class Solution {
public:
    int findContentChildren(vector<int>& g, vector<int>& s) {
    sort(g.begin(),g.end());
	sort(s.begin(), s.end());
	int num=0;
	while (!g.empty() && !s.empty()) {
		if (g.front() <= s.front()) {
			num++;
			g.erase(g.begin(), g.begin() + 1);
			s.erase(s.begin(), s.begin() + 1);
		}
		else {
			s.erase(s.begin(), s.begin() + 1);
		}
	}
	return num;
    }
};

段誉骂骂咧咧地退出了直播间

public int findContentChildren(int[] g, int[] s) {
    // 胃口小到大排序
    Arrays.sort(g);
    // 饼干尺寸小到大排序
    Arrays.sort(s);
    int ans = 0;
    int i = 0;
    int j = 0;
    while (i < g.length && j < s.length) {
        if (g[i] <= s[j]) {
            ans++;
            i++;
            j++;
        } else {
            j++;
        }
    }
    return ans;
}

C++ 发老婆咯(双指针)

class Solution {
public:
    int findContentChildren(vector<int>& g, vector<int>& s) {
        sort(g.begin(), g.end());
        sort(s.begin(), s.end());
        
        int m = g.size(), n = s.size();
        int i = 0, j = 0;
        while (i < m && j < n) {
            if (g[i] <= s[j]) ++i;
            ++j;
        }
        return i;
    }
};

请你们排好队,现在要开始发老婆了。 但是,每个小伙子最多只能给一个老婆。

🤡

1