LeetCode/rs/minimum-falling-path-sum.rs

30 lines
877 B
Rust
Raw Permalink Normal View History

impl Solution {
fn get(matrix: &[Vec<i32>], row: isize, col: isize) -> Option<i32> {
let rows = matrix.len() as isize;
if row < 0 || row >= rows {
return None;
}
let cols = matrix[row as usize].len() as isize;
if col < 0 || col >= cols {
return None;
}
Some(matrix[row as usize][col as usize])
}
pub fn min_falling_path_sum(mut matrix: Vec<Vec<i32>>) -> i32 {
for row in (0..matrix.len() - 1).rev() {
for col in 0..matrix[row].len() {
matrix[row][col] += vec![-1, 0, 1]
.into_iter()
.filter_map(|dcol| Self::get(&matrix, row as isize + 1, col as isize + dcol))
.min()
.unwrap()
}
}
*matrix.first().unwrap().iter().min().unwrap()
}
}