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

vocus|新世代的創作平台

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
高中數學主題練習—兩向量夾角
Thumbnail
高中數學主題練習—兩向量夾角
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
高中數學主題練習—兩點斜率
Thumbnail
高中數學主題練習—兩點斜率
Thumbnail
高中數學主題練習—三點共線
Thumbnail
高中數學主題練習—三點共線
Thumbnail
高中數學主題練習—兩點斜率
Thumbnail
高中數學主題練習—兩點斜率
Thumbnail
高中數學主題練習—最適直線計算
Thumbnail
高中數學主題練習—最適直線計算
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
高中數學主題練習—兩向量夾角
Thumbnail
高中數學主題練習—兩向量夾角
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News