























思路 看上去就是贪心题,把 costs 按升序排列,然后从小到大买直到买不了即可。 但是题目要求用计数排序,这里也正好复习一下。计数排序其实就是开一个数组,把数字当作下标,去统计每个数字出现了多少次,然后按下标顺序和数字数量去取出。 为了节省空间,我们可以先进行一趟扫描拿到 costs 中可能出现的最大值 maxVal 和最小值 minVal,这样只需要开 maxVal-minVal+1 的空间。 不过就是要注意,数字也要减去 minVal 才映射到下标。 代码 class Solution { public: int maxIceCream(vector<int>& costs, int coins) { // 简单贪心问题 int n=costs.size(); // 题目要求用计数排序,如果要省空间可以先扫描一趟找到最大值 int maxVal=0; int minVal=costs[0]; for(int c:costs){ maxV...
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。