leetcode 860 柠檬水找零

一、题目描述

二、解题思路

整体思路

可以采用哈希表+模拟来解决这个问题,哈希表用于记录手中5、10面额的钱的数量,模拟这个结账的过程。

具体思路

(1)hash向量用于记录手中5、10面额的钱的数量,用于模拟哈希表,由于只需要记录两种面额钱的出现次数,所以将长度初始化为3,元素为0;

(2)遍历bills数组:

<1>如果当前的客人持有的是5美元,就执行hash[1]++;

<2>如果当前的客人持有的是10美元,如果有手上有5美元,就进行找零,continue。如果手上没有5美元,表示无法找零,返回false;

<3>如果当前的客人持有的是20美元,优先用一张10一张5进行找零,然后是3张5美元找零,如果都不能找零,就返回false;

(3)若可以将循环执行完,表示可以完成找零,返回true;

三、代码实现

cpp 复制代码
class Solution {
public:
    bool lemonadeChange(vector<int>& bills) {
        //哈希表+模拟
        //数组模拟哈希表
        vector<int> hash(3,0);
        for(auto b:bills){
            if(b==5) hash[1]++;
            if(b==10){
                if(hash[1]==0) return false;
                else{
                    hash[1]--;
                    hash[2]++;
                }
            }
            if(b==20){
                //找零10和5美元
                if(hash[2]>=1&&hash[1]>=1){
                    hash[2]--;
                    hash[1]--;
                    continue;
                }
                //找零3个5美元
                if(hash[1]>=3){
                    hash[1]-=3;
                    continue;
                }
                return false;
            }
        }
        return true;
    }
};
相关推荐
.YM.Z24 分钟前
【数据结构】:排序(一)
数据结构·算法·排序算法
Chat_zhanggong34528 分钟前
K4A8G165WC-BITD产品推荐
人工智能·嵌入式硬件·算法
百***480743 分钟前
【Golang】slice切片
开发语言·算法·golang
墨染点香1 小时前
LeetCode 刷题【172. 阶乘后的零】
算法·leetcode·职场和发展
做怪小疯子1 小时前
LeetCode 热题 100——链表——反转链表
算法·leetcode·链表
郝学胜-神的一滴1 小时前
Linux命名管道:创建与原理详解
linux·运维·服务器·开发语言·c++·程序人生·个人开发
晚风(●•σ )2 小时前
C++语言程序设计——11 C语言风格输入/输出函数
c语言·开发语言·c++
恒者走天下3 小时前
秋招落定,拿到满意的offer,怎么提高自己实际的开发能力,更好的融入团队
c++
做怪小疯子3 小时前
LeetCode 热题 100——矩阵——旋转图像
算法·leetcode·矩阵
努力学习的小廉3 小时前
我爱学算法之—— BFS之最短路径问题
算法·宽度优先