LeetCode Entry
120. Triangle
Min path sum in triangle
120. Triangle medium blog post substack youtube

Join me on Telegram
https://t.me/leetcode_daily_unstoppable/1123
Problem TLDR
Min path sum in triangle #medium #dp
Intuition
Go from top to bottom, keeping the previous result: curr[i] = t[j][i] + min(prev[i], prev[i-1])
Approach
- careful with out of bounds exceptions
- use Int.MAX_VALUE / 200
Complexity
-
Time complexity: \(O(n)\)
-
Space complexity: \(O(n)\)
Code
// 19ms
fun minimumTotal(t: List<List<Int>>) = t.drop(1)
.fold(t[0]) { p,t -> listOf(p[0] + t[0]) + (1..<t.size)
.map { i-> t[i]+min(p[min(i, p.size-1)],p[i-1])}}.min()
// 0ms
pub fn minimum_total(t: Vec<Vec<i32>>) -> i32 {
t.iter().skip(1).fold(vec![t[0][0]], |p, r| { once(p[0]+r[0])
.chain((1..r.len()).map(|i| r[i]+p[i.min(p.len()-1)].min(p[i-1]))).collect()
}).into_iter().min().unwrap()
}