zl程序教程

您现在的位置是:首页 >  后端

当前栏目

136、【贪心算法】leetcode ——860. 柠檬水找零(贪心策略)(C++版本)

C++LeetCode算法 版本 策略 贪心 136
2023-09-11 14:20:01 时间

题目描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
原题链接:860. 柠檬水找零

解题思路

对三种情况进行模拟(5、10、20),每次给的时候,先把优先把大钱给出,大钱没有了再给小钱

class Solution {
public:
    bool lemonadeChange(vector<int>& bills) {
        int five = 0, ten = 0;
        for(int i = 0; i < bills.size(); i++) {            
            if(bills[i] == 5) {
                five++;             
            } else if(bills[i] == 10) {    
                if(five > 0) {
                    ten++;
                    five--;                    
                } else              return false;           
            } else if(bills[i] == 20) {
                if(ten > 0 && five > 0) {               // 先用ten
                    ten--;
                    five--;                    
                } else if(ten == 0 && five >= 3) {     // ten没有,再多用five
                    five -= 3;
                } else              return false;
            }
        }
        return true;
    }
};

参考文章:860. 柠檬水找零