楼主:
yam276 ('_')
2025-06-10 14:46:021732. Find the Highest Altitude
题目:
骑车大师骑车跑山
每次经过的点是相对高度
计算骑车大师经过的最高点多高
思路:
直接累加 定期更新最高点
这一题有点太简单了
Code:
impl Solution {
pub fn largest_altitude(gain: Vec<i32>) -> i32 {
let mut highest = 0;
let mut height = 0;
for h in gain {
height += h;
highest = highest.max(height);
}
highest
}
}
也可以用 scan 来链式解:
gain.iter()
.scan(0, |acc, &x| {
*acc += x;
Some(*acc)
})
.chain(std::iter::once(0))
.max()
.unwrap()
.chain() 这行只是设定起始值是高度 0 的 iterator
因为 .scan() 没有考虑到起始点
acc 是每次回传的状态
&x 则是每次取出的 iterator