问题描述 链接到标题

860.柠檬水找零

解题思路 链接到标题

创建一个数组,表示手中的5元纸币、10元纸币、20元纸币的数目,当其中5元纸币数目小于0,说明无法找零,遇到20元纸币时,优先使用10元纸币找零。

代码 链接到标题

#include <vector>
using std::vector;
class Solution {
  public:
    bool lemonadeChange(vector<int> &bills) {
        vector<int> num(3, 0);
        for (int i = 0; i < bills.size(); i++) {
            if (bills[i] == 5)
                num[0]++;
            else if (bills[i] == 10) {
                if (num[0] > 0) {
                    num[0]--;
                    num[1]++;
                } else {
                    return false;
                }
            } else {
                if (num[1] > 0) {
                    if (num[0] > 0) {
                        num[1]--;
                        num[0]--;
                    } else
                        return false;
                } else {
                    if (num[0] > 2)
                        num[0] -= 3;
                    else
                        return false;
                }
            }
        }
        return true;
    }
};