力扣 LeetCode 860. 柠檬水找零(Day16:贪心算法)

力扣 LeetCode 860. 柠檬水找零(Day16:贪心算法)_第1张图片

解题思路:

局部最优解在于收钱20元时,优先找零10+5,而不是5+5+5,因为5更通用一些,留在后面使用

class Solution {
    public boolean lemonadeChange(int[] bills) {
        int five = 0, ten = 0, twenty = 0;
        
        for (int bill : bills) {
            if (bill == 5) five++;
            else if (bill == 10) {
                if (five > 0) {
                    five--;
                    ten++;
                } else return false;
            } else if (bill == 20) {
                if (ten > 0 && five > 0) {
                    ten--;
                    five--;
                    twenty++;
                } else if (five >= 3) {
                    five -= 3;
                    twenty++;
                } else return false;
            }
        }
        return true;
    }
}

你可能感兴趣的:(leetcode,贪心算法,算法)