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雪糕的最大数量

文巾解题 1833. 雪糕的最大数量

LeetCode 1833. 雪糕的最大数量 / NC62 平衡二叉树 / NC7:股票(一次交易)/ NC22 合并两个有序的数组

1833. 雪糕的最大数量C++

[M贪心] lc1833. 雪糕的最大数量(贪心+水题)