🍋情境模擬: 檸檬水小舖 Lemonade Change_Leetcode #860

更新於 2024/08/25閱讀時間約 4 分鐘

題目敘述 860. Lemonade Change


假想一個經營檸檬水小舖的情境。

一杯檸檬水都賣$5

顧客付錢時只有三種可能,$5, $10 或 $ 20

初始時,檸檬水小舖沒有零錢。


給定一個顧客買檸檬水的付錢陣列bills,請問能不能滿足每一筆交易,並且找開零錢

如果可以,返回True。

如果不行,返回False。


測試範例

Example 1:

Input: bills = [5,5,5,10,20]
Output: true
Explanation:

​店鋪收到$5
​店鋪收到$5
​店鋪收到$5
​店鋪找錢$5
​店鋪找錢$10 + $5

Example 2:

Input: bills = [5,5,10,10,20]
Output: false
Explanation:

​店鋪收到$5
​店鋪收到$5
​店鋪找錢$5
​店鋪找錢$5
​店鋪已經沒有零錢可以找了。

演算法 情境模擬,盡可能用比較少數量的銅板去零錢。


因為題目要求是盡可能的滿足每一筆交易,並且找開零錢。

所以盡可能用比較少數量的銅板去零錢

遇到顧客付$5,剛好不用找零。

遇到顧客付$10,找給顧客$5。

遇到顧客付$20,先試著找給顧客$10 + $5,假如不行才找給顧客$5 + $5 + $5。


假如某一回合,店鋪沒有零錢,則返回False。

如果可以滿足每一筆交易,並且找開零錢給顧客,則返回True。


程式碼 情境模擬,盡可能用比較少數量的銅板去零錢。

class Solution:
def lemonadeChange(self, bills: List[int]) -> bool:

counter_of_5, counter_of_10, counter_of_20 = 0, 0, 0

for cumstomer_payment in bills:

if cumstomer_payment == 5:
counter_of_5 += 1

else:

if cumstomer_payment == 10:

counter_of_10 += 1

# make change with $5
counter_of_5 -= 1

else:

counter_of_20 += 1

if counter_of_10:

# eco-greedy on $5 dollars.
# make change with $15 = $10 + $5
counter_of_10 -= 1
counter_of_5 -= 1

else:

# make change with $15 = 3 * $5
counter_of_5 -= 3

if counter_of_5 < 0:
# out of 5 dollars,
# therefore cannot make change to customer
return False

return True

複雜度分析

時間複雜度: O(n)

依序處理每一筆交易,每一筆交易可以在O(1)時間內完成找零,總共耗時O(n)。


空間複雜度: O(1)

所用到的變數都是臨時變數,所需空間為O(1)常數級別。


Reference

[1] Lemonade Change - LeetCode

avatar-img
90會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
題目敘述 Find K-th Smallest Pair Distance 給定一個輸入陣列nums和 參數k。 請找出第k小的pair distance是多少? pair distance定義為 abs( nums[i] - nums[j]), i 不等於j 也就是任意兩陣列元素差值的絕對值
題目敘述 Combination Sum II_Leetcode #40 給定一個整數陣列candidates 和 目標值target。 每個陣列元素只能選擇一次,請問有多少種組合方法,可以使得組合數總和 = target? 請把滿足組合數總和 = target的組合方法以陣列的形式返回答案
題目敘述 149. Max Points on a Line 給定一串2維平面的點座標,請問最多有幾個點落在同一條直線上? 落在同一條直線也就是數學上所謂的"共線" colinear
題目敘述: 給定一個二維陣列的高與寬,並且給定起點位置座標。 請從起點位置開始順時針拜訪陣列元素,並且把沿路走過的座標記錄下來。 以陣列的形式返回答案。
題目敘述 Integer to English Words 給定一個整數num 請轉換成對應的的英文數字表達(One, Two, Three, ... 那種數字表達式)
題目敘述: 給定一個傳統手機鍵盤,如圖所示 接著給定一個字串word。 現在讓你重新安排每個字母的所在位置,每個字母可以重新安排到2~9這幾個鍵盤上的位置,每個字母限定只能選擇一個數字鍵去對應。 請問重新安排之後,最少要幾次按鍵才能輸出字串word?
題目敘述 Find K-th Smallest Pair Distance 給定一個輸入陣列nums和 參數k。 請找出第k小的pair distance是多少? pair distance定義為 abs( nums[i] - nums[j]), i 不等於j 也就是任意兩陣列元素差值的絕對值
題目敘述 Combination Sum II_Leetcode #40 給定一個整數陣列candidates 和 目標值target。 每個陣列元素只能選擇一次,請問有多少種組合方法,可以使得組合數總和 = target? 請把滿足組合數總和 = target的組合方法以陣列的形式返回答案
題目敘述 149. Max Points on a Line 給定一串2維平面的點座標,請問最多有幾個點落在同一條直線上? 落在同一條直線也就是數學上所謂的"共線" colinear
題目敘述: 給定一個二維陣列的高與寬,並且給定起點位置座標。 請從起點位置開始順時針拜訪陣列元素,並且把沿路走過的座標記錄下來。 以陣列的形式返回答案。
題目敘述 Integer to English Words 給定一個整數num 請轉換成對應的的英文數字表達(One, Two, Three, ... 那種數字表達式)
題目敘述: 給定一個傳統手機鍵盤,如圖所示 接著給定一個字串word。 現在讓你重新安排每個字母的所在位置,每個字母可以重新安排到2~9這幾個鍵盤上的位置,每個字母限定只能選擇一個數字鍵去對應。 請問重新安排之後,最少要幾次按鍵才能輸出字串word?
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
本文探討Lemon線上購物平臺的兩種主要收入來源:手續費與銷售庫存。透過分析A國拉麵公司的案例,闡述如何透過提前購買庫存及提供24小時配送來提升銷售額。儘管2021年至2022年的銷售額成長567%,實際銷售量卻未變動,這提示了銷售額與銷售量的關係並非一定成正比。
Thumbnail
這款新鮮的檸檬紅茶很多地方都買的到,不用怕會扑空😋
Thumbnail
海鹽檸檬  奶素 49元 這一次的霜淇淋有三種口味,分別是 -  復刻的 草莓優格&巨峰葡萄 跟新口味的 海鹽檸檬 上次已經吃過草莓優格跟巨峰葡萄,所以這次就專攻海鹽檸檬
Thumbnail
全家最新推出的冰淇淋口味-海鹽檸檬,讓人一試上癮。這款冰淇淋帶有微酸甜的檸檬風味,絕對值得一試!
Thumbnail
一天麥可叫我去餐廳吃飯,飯菜準備好了,但因為牛奶製品而產生歧見,隨後談到電影交換和復康中心的事情。
Thumbnail
檸檬學院和草莓學院要比賽啦!適合一家人分組競賽!到底贏的會是草莓還是檸檬呢?
Thumbnail
數字5代表變化、進步、啟發,當你在生活中看到555出現,你可能需要準備好,隨時接受新的挑戰與改變。不要害怕改變,把試煉當成一段新的冒險。希望有看到數字555的朋友,不要害怕改變~ 加油
Thumbnail
材料準備 A=藍柑橘利口酒-10ml A=蘭姆酒-40ml (一定要用無色的,不然漸層會變色) 100%柳橙汁-120ml (原版是鳳梨汁,但便利商店沒有賣,水果攤商只賣一整罐很難用完) 農榨檸檬汁-80ml (原版加的是糖漿,但只能買一大罐,所以用現成飲料調甜度就好) 新鮮檸檬-半顆切片
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
本文探討Lemon線上購物平臺的兩種主要收入來源:手續費與銷售庫存。透過分析A國拉麵公司的案例,闡述如何透過提前購買庫存及提供24小時配送來提升銷售額。儘管2021年至2022年的銷售額成長567%,實際銷售量卻未變動,這提示了銷售額與銷售量的關係並非一定成正比。
Thumbnail
這款新鮮的檸檬紅茶很多地方都買的到,不用怕會扑空😋
Thumbnail
海鹽檸檬  奶素 49元 這一次的霜淇淋有三種口味,分別是 -  復刻的 草莓優格&巨峰葡萄 跟新口味的 海鹽檸檬 上次已經吃過草莓優格跟巨峰葡萄,所以這次就專攻海鹽檸檬
Thumbnail
全家最新推出的冰淇淋口味-海鹽檸檬,讓人一試上癮。這款冰淇淋帶有微酸甜的檸檬風味,絕對值得一試!
Thumbnail
一天麥可叫我去餐廳吃飯,飯菜準備好了,但因為牛奶製品而產生歧見,隨後談到電影交換和復康中心的事情。
Thumbnail
檸檬學院和草莓學院要比賽啦!適合一家人分組競賽!到底贏的會是草莓還是檸檬呢?
Thumbnail
數字5代表變化、進步、啟發,當你在生活中看到555出現,你可能需要準備好,隨時接受新的挑戰與改變。不要害怕改變,把試煉當成一段新的冒險。希望有看到數字555的朋友,不要害怕改變~ 加油
Thumbnail
材料準備 A=藍柑橘利口酒-10ml A=蘭姆酒-40ml (一定要用無色的,不然漸層會變色) 100%柳橙汁-120ml (原版是鳳梨汁,但便利商店沒有賣,水果攤商只賣一整罐很難用完) 農榨檸檬汁-80ml (原版加的是糖漿,但只能買一大罐,所以用現成飲料調甜度就好) 新鮮檸檬-半顆切片