返回介绍

solution / 0800-0899 / 0860.Lemonade Change / README_EN

发布于 2024-06-17 01:03:33 字数 5196 浏览 0 评论 0 收藏 0

860. Lemonade Change

中文文档

Description

At a lemonade stand, each lemonade costs $5. Customers are standing in a queue to buy from you and order one at a time (in the order specified by bills). Each customer will only buy one lemonade and pay with either a $5, $10, or $20 bill. You must provide the correct change to each customer so that the net transaction is that the customer pays $5.

Note that you do not have any change in hand at first.

Given an integer array bills where bills[i] is the bill the ith customer pays, return true _if you can provide every customer with the correct change, or_ false _otherwise_.

 

Example 1:

Input: bills = [5,5,5,10,20]
Output: true
Explanation: 
From the first 3 customers, we collect three $5 bills in order.
From the fourth customer, we collect a $10 bill and give back a $5.
From the fifth customer, we give a $10 bill and a $5 bill.
Since all customers got correct change, we output true.

Example 2:

Input: bills = [5,5,10,10,20]
Output: false
Explanation: 
From the first two customers in order, we collect two $5 bills.
For the next two customers in order, we collect a $10 bill and give back a $5 bill.
For the last customer, we can not give the change of $15 back because we only have two $10 bills.
Since not every customer received the correct change, the answer is false.

 

Constraints:

  • 1 <= bills.length <= 105
  • bills[i] is either 5, 10, or 20.

Solutions

Solution 1

class Solution:
  def lemonadeChange(self, bills: List[int]) -> bool:
    five = ten = 0
    for v in bills:
      if v == 5:
        five += 1
      elif v == 10:
        ten += 1
        five -= 1
      else:
        if ten:
          ten -= 1
          five -= 1
        else:
          five -= 3
      if five < 0:
        return False
    return True
class Solution {
  public boolean lemonadeChange(int[] bills) {
    int five = 0, ten = 0;
    for (int v : bills) {
      switch (v) {
        case 5 -> ++five;
        case 10 -> {
          ++ten;
          --five;
        }
        case 20 -> {
          if (ten > 0) {
            --ten;
            --five;
          } else {
            five -= 3;
          }
        }
      }
      if (five < 0) {
        return false;
      }
    }
    return true;
  }
}
class Solution {
public:
  bool lemonadeChange(vector<int>& bills) {
    int five = 0, ten = 10;
    for (int v : bills) {
      if (v == 5) {
        ++five;
      } else if (v == 10) {
        ++ten;
        --five;
      } else {
        if (ten) {
          --ten;
          --five;
        } else {
          five -= 3;
        }
      }
      if (five < 0) {
        return false;
      }
    }
    return true;
  }
};
func lemonadeChange(bills []int) bool {
  five, ten := 0, 0
  for _, v := range bills {
    if v == 5 {
      five++
    } else if v == 10 {
      ten++
      five--
    } else {
      if ten > 0 {
        ten--
        five--
      } else {
        five -= 3
      }
    }
    if five < 0 {
      return false
    }
  }
  return true
}
function lemonadeChange(bills: number[]): boolean {
  let five = 0;
  let ten = 0;
  for (let bill of bills) {
    switch (bill) {
      case 5:
        five++;
        break;
      case 10:
        five--;
        ten++;
        break;
      case 20:
        if (ten !== 0) {
          ten -= 1;
          bill -= 10;
        }
        five -= bill / 5 - 1;
        break;
    }

    if (five < 0) {
      return false;
    }
  }
  return true;
}
impl Solution {
  pub fn lemonade_change(bills: Vec<i32>) -> bool {
    let (mut five, mut ten) = (0, 0);
    for bill in bills.iter() {
      match bill {
        5 => {
          five += 1;
        }
        10 => {
          five -= 1;
          ten += 1;
        }
        _ => {
          if ten != 0 {
            ten -= 1;
            five -= 1;
          } else {
            five -= 3;
          }
        }
      }

      if five < 0 {
        return false;
      }
    }
    true
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文