题目

image.png

思路

。。我没做出来。但结果就是直接模拟题(虽然在模拟的过程中有一点贪心的思想,聊胜于无吧)
我为什么没做出来呢?
首先,第一次做完才知道题目读错了。这里钱是分为 5/10/20的,所以是不能累加在一起的!
必须要分开 计数five/ten/twenty(其实不写20也行),不然就会混乱的!!别想太多!
其次这道题因为条件限定很死,就三种情况,直接模拟就好了。

  1. var lemonadeChange = function(bills) {
  2. let fiveCount = 0
  3. let tenCount = 0
  4. for(let i = 0; i < bills.length; i++) {
  5. let bill = bills[i]
  6. if(bill === 5) {
  7. fiveCount += 1
  8. } else if (bill === 10) {
  9. if(fiveCount > 0) {
  10. fiveCount -=1
  11. tenCount += 1
  12. } else {
  13. return false
  14. }
  15. } else {
  16. if(tenCount > 0 && fiveCount > 0) {
  17. tenCount -= 1
  18. fiveCount -= 1
  19. } else if(fiveCount >= 3) {
  20. fiveCount -= 3
  21. } else {
  22. return false
  23. }
  24. }
  25. }
  26. return true
  27. };