LeetCode 1833 雪糕的最大数量[排序 贪心] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1833 雪糕的最大数量[排序 贪心] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
遇到这道题目首先想到了深搜回溯的方法,兴致冲冲码完了代码,一提交立刻超时,看了看用例发现根本不能用,n的范围那么大,肯定要超时,代码如下:
class Solution {
private:
int sum = 0;
public:
void dfs(vector<int>& costs, int coins, int i, int& num) {
if(i == costs.size()) {
sum = max(sum, num);
return;
}
// 不购买当前雪糕
dfs(costs, coins, i + 1, num);
// 购买当前雪糕
if(coins >= costs[i]) {
num ++;
dfs(costs, coins - costs[i], i + 1, num);
coins += costs[i];
num --;
}
}
int maxIceCream(vector<int>& costs, int coins) {
int num = 0;
dfs(costs, coins, 0, num);
return sum;
}
};
所以还是得分析题目本身去做,既然要最多的雪糕数量,且没有顺序要求,那么直接对雪糕价钱排序,从最低往高买,看能买到多少,买不到了就再也买不了了,直接退出循环即可,代码如下:
class Solution {
public:
int maxIceCream(vector<int>& costs, int coins) {
sort(costs.begin(), costs.end());
int count = 0;
for(auto& cost : costs) {
if(coins >= cost) {
count ++;
coins -= cost;
} else {
break;
}
}
return count;
}
};
以上是关于LeetCode 1833 雪糕的最大数量[排序 贪心] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 1833 雪糕的最大数量[排序 贪心] HERODING的LeetCode之路
LeetCode:1832判断句子是否为全字母句1833雪糕的最大数量
LeetCode 1833. 雪糕的最大数量 / NC62 平衡二叉树 / NC7:股票(一次交易)/ NC22 合并两个有序的数组