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;
}
}