题意描述
题目来源: 455. Assign Cookies
给定两个数组s, j, 如果s[i] >= g[j] , 其中 0 <= i < n, 0 <= j < m, 则满意度加一,问
最大的满意值是多少
算法解析
- 先将s,j从大到小进行排序
- s, j依次枚举
2.1 如果s[i] >= g[j], 则满意度count加一, i++, j++
2.2 否则,j++,返回2.1 - 返回count
算法分析
排序的时间复杂度是 max(O(nlogn) , O(mlogm))
枚举的时间复杂度是 O(m + n)
所以最终的时间复杂度是 O(nlogn) 其中 n = max(n, m)
代码
var findContentChildren = function(g, s) {
var compare = function(value1, value2){
if(value1 < value2)
return 1;
else if(value1 > value2)
return -1;
else
return 0;
}
g.sort(compare);
s.sort(compare);
var count = 0,
i = 0,
j = 0;
while(i < s.length && j < g.length){
while(j < g.length && s[i] < g[j])
j++;
if(j < g.length)
count++;
i++;
j++;
}
return count;
};