1518. Water Bottles | LeetCode | Swift

vc7-avatar-img
發佈於LeetCode
更新 發佈閱讀 3 分鐘

題目

https://leetcode.com/problems/water-bottles/description/?envType=daily-question&envId=2025-10-01

日期

2025/10/1

raw-image

直覺解

每一次的 while 迴圈,進行:

  • 從當前的被除數,算出商
  • 商加上餘數作為新的被除數
  • 把結果加上當前的商

直到當前的被除數小於除數為止。
就是一五一十的把題意寫出來。

class Solution {
func numWaterBottles(_ numBottles: Int, _ numExchange: Int) -> Int {
var current = numBottles
var result = current
while current >= numExchange {
let new = current / numExchange
current = new + current % numExchange
result += new
}
return result
}
}

優化解

因為每一次兌換後,會拿回一個瓶子,因此每次空瓶的兌換成本是 numExchange - 1

接下來只要算透過兌換成本能換幾次。但是因為在 edge case 裡,例如餘數剛好等於兌換成本的時候,就會被多換一次。以第二個範例為例:

Input: numBottles = 15, numExchange = 4

15 / (4 - 1) 為 5 。但是其實應該為 4 ,因為最後一組的三個空瓶其實是沒有辦法兌換的。 -1 就是為了這一類的情形做的調整。

程式碼

因此這邊的計算方式就變成這樣:

原本的瓶數 + 能兌換到的瓶數
class Solution {
func numWaterBottles(_ numBottles: Int, _ numExchange: Int) -> Int {
return numBottles + (numBottles - 1) / (numExchange - 1)
}
}
留言
avatar-img
留言分享你的想法!
avatar-img
萱寫寫
2會員
19內容數
讀書心得、活動參加心得
萱寫寫的其他內容
2025/09/26
LeetCode 每日一題: 2025/09/26
2025/09/26
LeetCode 每日一題: 2025/09/26
2025/09/25
LeetCode 每日一題: 2025/09/25
2025/09/25
LeetCode 每日一題: 2025/09/25
2025/09/24
2025/09/24
看更多
你可能也想看
Thumbnail
覺得黏在額頭上的"條碼瀏海"很阿雜嗎?日本熱銷的「KOIZUMI迷你瀏海梳」,不僅小巧便攜,更能快速加熱造型,無論是齊瀏海、空氣瀏海還是韓系碎蓋髮,都能輕鬆打理!瀏海順了,一整天心情就好了!
Thumbnail
覺得黏在額頭上的"條碼瀏海"很阿雜嗎?日本熱銷的「KOIZUMI迷你瀏海梳」,不僅小巧便攜,更能快速加熱造型,無論是齊瀏海、空氣瀏海還是韓系碎蓋髮,都能輕鬆打理!瀏海順了,一整天心情就好了!
Thumbnail
走完朝聖之路和TMB後,我發現真正能撐住長時間健行的,不只是腳力,而是那些讓生活更舒服的小物。這篇整理了我在TMB實測後覺得超好用的三樣登山神器——防水襪、肥皂袋、速乾毛巾,每一樣都讓旅程更輕鬆!
Thumbnail
走完朝聖之路和TMB後,我發現真正能撐住長時間健行的,不只是腳力,而是那些讓生活更舒服的小物。這篇整理了我在TMB實測後覺得超好用的三樣登山神器——防水襪、肥皂袋、速乾毛巾,每一樣都讓旅程更輕鬆!
Thumbnail
高中數學主題練習—對數方程式
Thumbnail
高中數學主題練習—對數方程式
Thumbnail
Leetcode 精選75題 題目與題解 熱門考點 目錄 (持續更新中) 建議從左側目錄 或者 按Ctrl+F輸入關鍵字進行搜尋
Thumbnail
Leetcode 精選75題 題目與題解 熱門考點 目錄 (持續更新中) 建議從左側目錄 或者 按Ctrl+F輸入關鍵字進行搜尋
Thumbnail
2018/08/20 17:12 拍圖
Thumbnail
2018/08/20 17:12 拍圖
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News