这道题的意思是有两个数组 g 和 s,其中 g 表示每个孩子的胃口值(贪心值),s 表示每个饼干的大小。目标是想要满足尽可能多的孩子,问最多可以满足多少个孩子。
这个代码的思路是:
1. 首先对 g 和 s 数组分别排序。
2. 设置 index 指向 s 数组的最后一个元素,也就是最大的饼干。
3. 从 g 数组末尾开始遍历每个孩子,如果当前孩子的胃口小于等于 index 指向的饼干大小,则可以满足该孩子,result++,同时 index--。
4. 如果碰到胃口更大的孩子,index 不变,继续遍历下一个孩子。
5. 最后 result 即为可以满足的最多孩子数量。
所以这里设置 index = s.size() - 1 的目的是让 index 一开始就指向 s 数组中的最大饼干。
这种倒序遍历的做法可以让一个饼干尽可能满足更多的孩子,同时也利用了排序让贪心思路更清晰。
所以 index 作为 s 数组下标,指向最大饼干,是这种贪心策略的核心所在。
为什么for一定要是胃口?