方法一:调用Arrays.sort()对costs数组进行排序
class Solution {
public int maxIceCream(int[] costs, int coins) {
Arrays.sort(costs);
int res = 0;
for(int i=0; i < costs.length && coins > 0; ++i) {
if(costs[i] <= coins) {
coins -= costs[i];
res++;
}
}
return res;
}
}
方法二:桶排序(牺牲内存 缩短用时)
class Solution {
public int maxIceCream(int[] costs, int coins) {
int[] cup = new int[100001];
for(int i=0;i<costs.length;++i) {
cup[costs[i]]++;
}
int res = cup[0];
for(int i=1;i<100001;++i) {
int plus = coins/i;
if(plus == 0) {
break;
}
plus = (plus>cup[i])?cup[i]:plus;
res += plus;
coins -= i*plus;
}
return res;
}
}