Swift 的实现还是太少,记录下自己的练习
题目见LeetCode
条件:
- 面额 不是 5 就是 10 或是 20
- 每一杯[柠檬水]的售价为 5 元
- 开始手上没有任何钞票
思路:
1.开辟三个变量记录拥有的钞票数
2.给5元,5元钞票数++,通过,继续下一个
3.给10元,拥有的钞票数只要有一张5元的,通过,继续下一个
4.给了20元,先把10元的钞票退出去(10元钞票只能用于20元的找零),然后退一张5元的;没有10元就退三张5元。
class Solution {
func lemonadeChange(_ bills: [Int]) -> Bool {
var b5 = 0
var b10 = 0
var b20 = 0
for b in bills {
switch b {
case 5:
b5 += 1
case 10:
if b5 > 0 {
b10 += 1
b5 -= 1
} else {
return false
}
case 20:
if b10 > 0 {
b10 -= 1
if b5 > 0 {
b5 -= 1
b20 += 1
} else {
return false
}
} else {
if b5 >= 3 {
b5 -= 3
b20 += 1
} else {
return false
}
}
default:
return false
}
}
return true
}
}