120. Triangle | LeetCode | Swift

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

每日一題

https://leetcode.com/problems/triangle/description/?envType=daily-question&envId=2025-09-19

日期

2025/9/25

raw-image

Bottom-up DP 解法

分析題目之後,會發現這是一題 DP (Dynamic Programming) 的題目,意味著我們需要找到最小的 routine ,再重複執行 routine 取得最終結果。

Routine

自己 + 最小值(下一行[index], 下一行[index + 1])

從底部往上開始走訪:

class Solution {
func minimumTotal(_ triangle: [[Int]]) -> Int {
var dp = triangle[triangle.count - 1]

for i in stride(from: triangle.count - 2, through: 0, by: -1) {
for j in 0..<triangle[i].count {
// Routine:
// 直接更新 dp[j],選擇下一行兩個可能路徑的最小值
dp[j] = triangle[i][j] + min(dp[j], dp[j + 1])
}
}

return dp[0]
}
}

使用高階函式・一行解法

這個 dp 的寫法還算單純,於是試著自己用用看高階函式

參考 ChatGPT 和 iamhands0me 的解法,最後還是 iamhands0me 寫法最漂亮 ,快幫他按讚:

Swift Algorithm 的 adjacentPairs

這個函式可以幫我們把一個陣列變成兩兩一對(文件),例如:

[4, 1, 8, 3]
// 進行 adjacentPairs
// 結果: [(4, 1), (1, 8), (8, 3)]​

這時候再透過 min 就可以找出最小值:

[(4, 1), (1, 8), (8, 3)].map { min($0, $1) }
// 結果: [1, 1, 3]

更精簡一點就可以寫成這樣

[(4, 1), (1, 8), (8, 3)].map(min)
// 結果: [1, 1, 3]

程式碼

邏輯本身大同小異,比較考驗對高階函式的熟練程度。

class Solution {
func minimumTotal(_ triangle: [[Int]]) -> Int {
triangle
.reversed()
// 建立一個基底為 0 的 dummy 陣列給 bottom most row
.reduce(Array(repeating: 0, count: triangle.count + 1)) {
zip(
$1,
$0.adjacentPairs().map(min)
)
.map(+)
}
.first ?? 0
}
}
留言
avatar-img
萱寫寫
3會員
19內容數
讀書心得、活動參加心得
萱寫寫的其他內容
2025/09/24
2025/09/24
2025/09/23
LeetCode 每日一題: 2025/09/23
2025/09/23
LeetCode 每日一題: 2025/09/23
2025/09/22
2025/09/22
看更多
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
高中數學主題練習—兩向量夾角
Thumbnail
高中數學主題練習—兩向量夾角
Thumbnail
高中數學主題練習—三點共線
Thumbnail
高中數學主題練習—三點共線
Thumbnail
高中數學主題練習—兩點斜率
Thumbnail
高中數學主題練習—兩點斜率
Thumbnail
高中數學主題練習—兩點斜率
Thumbnail
高中數學主題練習—兩點斜率
Thumbnail
高中數學主題練習—兩向量夾角
Thumbnail
高中數學主題練習—兩向量夾角
Thumbnail
高中數學主題練習—最適直線計算
Thumbnail
高中數學主題練習—最適直線計算
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News