贪心习题小总结
不要怪笔者写的简陋,真的没有太多时间和精力来整理了。 要使用贪心算法就要证明,贪心策略可以得到全局最优解,因此它并没有动态规划应用那么广泛,但是一旦证明贪心策略的重要性往往可以用O(n)的复杂度解决问题。 一、分配问题 455. 分发饼干 贪心策略: 我们先对饼干和孩子排序,拿最小的饼干去满足胃口最小的孩子。 class Solution { public int findContentChildren(int[] g, int[] s) { int count = 0; Arrays.sort(g); Arrays.sort(s); int start = 0; for(int i = 0; i < g.length; i++) { for(int j = start; j < s.length; j++) { if(s[j] >= g[i]) { count++; start = j + 1; break; } } if(start >= s.length) break; } return count; } } 135. 分发糖果 策略: ①先给每一个孩子分发一个糖果存在数组a与b中 ②数组a从左向右遍历,只要右边的孩子比左边的孩子分数高就多发一枚糖果。 ③数组b从右向左遍历,只要左边孩子比右边孩子分数高就多发一枚糖果。 ④ans[i] = max{ a[i], b[i] }