leetcode No1833 雪糕的最大数量
Posted 短腿Cat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode No1833 雪糕的最大数量相关的知识,希望对你有一定的参考价值。
题目
题解 贪心+排序
贪心,顾名思义就是贪到最多的,本题要求一定数额的钱,要获得最多数量的雪糕,那以我们平常人的思维去买,就是:
-
先买最便宜的
-
然后再买次便宜的
-
…
因此我们可以先将数组排序,排序后从头开始遍历,一直算到前i个雪糕价钱之和大于coin时停止(或者一直小于coin就遍历到数组尾部停止),我们以官方例1来讲解,coins = 7 , 数组costs = [1, 3, 2, 4, 1],先排序,排完序后进行如下操作:
到3时,coin剩余为0,则退出,最多可得到4根雪糕
因此我们可以编写如下代码
java版本:
class Solution {
public int maxIceCream(int[] costs, int coins) {
Arrays.sort(costs);
int count = 0;
for (int i = 0; i < costs.length; i++) {
coins -= costs[i];
if (coins >= 0) {
count++;
} else {
break;
}
}
return count;
}
}
golang版本:
func maxIceCream(costs []int, coins int) (count int) {
sort.Ints(costs)
for _, c := range costs {
coins -= c
if coins >= 0 {
count++
} else {
break
}
}
return;
}
javascript版本:
/**
* @param {number[]} costs
* @param {number} coins
* @return {number}
*/
var maxIceCream = function(costs, coins) {
costs.sort((a, b) => a - b);
var count = 0;
var len = costs.length;
for (var i = 0; i < len; i++) {
coins -= costs[i];
if (coins >= 0) {
count++;
} else {
break;
}
}
return count;
};
以上是关于leetcode No1833 雪糕的最大数量的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 1833 雪糕的最大数量[排序 贪心] HERODING的LeetCode之路
LeetCode:1832判断句子是否为全字母句1833雪糕的最大数量
LeetCode 1833. 雪糕的最大数量 / NC62 平衡二叉树 / NC7:股票(一次交易)/ NC22 合并两个有序的数组