日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

LeetCode简单题之柠檬水找零

發布時間:2023/11/28 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode简单题之柠檬水找零 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

在檸檬水攤上,每一杯檸檬水的售價為 5 美元。顧客排隊購買你的產品,(按賬單 bills 支付的順序)一次購買一杯。
每位顧客只買一杯檸檬水,然后向你付 5 美元、10 美元或 20 美元。你必須給每個顧客正確找零,也就是說凈交易是每位顧客向你支付 5 美元。
注意,一開始你手頭沒有任何零錢。
給你一個整數數組 bills ,其中 bills[i] 是第 i 位顧客付的賬。如果你能給每位顧客正確找零,返回 true ,否則返回 false 。
示例 1:
輸入:bills = [5,5,5,10,20]
輸出:true
解釋:
前 3 位顧客那里,我們按順序收取 3 張 5 美元的鈔票。
第 4 位顧客那里,我們收取一張 10 美元的鈔票,并返還 5 美元。
第 5 位顧客那里,我們找還一張 10 美元的鈔票和一張 5 美元的鈔票。
由于所有客戶都得到了正確的找零,所以我們輸出 true。
示例 2:
輸入:bills = [5,5,10,10,20]
輸出:false
解釋:
前 2 位顧客那里,我們按順序收取 2 張 5 美元的鈔票。
對于接下來的 2 位顧客,我們收取一張 10 美元的鈔票,然后返還 5 美元。
對于最后一位顧客,我們無法退回 15 美元,因為我們現在只有兩張 10 美元的鈔票。
由于不是每位顧客都得到了正確的找零,所以答案是 false。
示例 3:
輸入:bills = [5,5,10]
輸出:true
示例 4:
輸入:bills = [10,10]
輸出:false
提示:
1 <= bills.length <= 10^5
bills[i] 不是 5 就是 10 或是 20
來源:力扣(LeetCode)

解題思路

??這道題需要一個記賬的數據結構,很顯然字典就是這種非常合適的對象。采用字典:用key表示錢的面值,用value表示錢的數量。找零時按照先找大頭再找小錢進行。

class Solution:def lemonadeChange(self, bills: List[int]) -> bool:if bills[0]!=5:  #如果第一個顧客給的錢不是5元那么就不能找零return Falsed={5:0,10:0,20:0}  #賬本for i in bills:if i==5:d[5]+=1elif i==10:  #10元只能找5元if d[5]>0:d[5]-=1d[10]+=1else:return Falseelse:   #20元能找一個10元和一個5元,如果10元沒有那么就找3個5元if d[10]>0 and d[5]>0:d[10]-=1d[5]-=1d[20]+=1elif d[5]>2:d[5]-=3d[20]+=1else:return Falsereturn True

總結

以上是生活随笔為你收集整理的LeetCode简单题之柠檬水找零的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。