860. 柠檬水找零(leetcode)

https://leetcode.cn/problems/lemonade-change/description/

贪心: 由于 10 美元钞票只能用于 20 美元的找零,而 5 美元钞票既可以用于 20 美元的找零,又可以用于 10 美元的找零,更加通用(使用场景更多),所以如果可以用 10 美元,应当优先用 10 美元,其次用 5 美元。如果优先用 5 美元,可能会面临 bills[i]=10 无法找零的情况。

class Solution {
    public boolean lemonadeChange(int[] bills) {
        int five = 0, ten = 0;
        for (int b : bills) {
            if (b == 5) { // 无需找零
                five++;
            } else if (b == 10) { // 返还 5
                five--;
                ten++;
            } else if (ten > 0) { // 此时 b=20,返还 10+5
                five--;
                ten--;
            } else { // 此时 b=20,返还 5+5+5
                five -= 3;
            }
            if (five < 0) { // 无法正确找零
                return false;
            }
        }
        return true;
    }
}

 

posted @ 2024-08-28 02:05  风乐  阅读(7)  评论(0)    收藏  举报