当前位置:网站首页>LeetCode每日一题(931. Minimum Falling Path Sum)
LeetCode每日一题(931. Minimum Falling Path Sum)
2022-07-03 09:01:00 【wangjun861205】
Given an n x n array of integers matrix, return the minimum sum of any falling path through matrix.
A falling path starts at any element in the first row and chooses the element in the next row that is either directly below or diagonally left/right. Specifically, the next element from position (row, col) will be (row + 1, col - 1), (row + 1, col), or (row + 1, col + 1).
Example 1:
Input: matrix = [[2,1,3],[6,5,4],[7,8,9]]
Output: 13
Explanation: There are two falling paths with a minimum sum as shown.
Example 2:
Input: matrix = [[-19,57],[-40,-5]]
Output: -59
Explanation: The falling path with a minimum sum is shown.
Constraints:
- n == matrix.length == matrix[i].length
- 1 <= n <= 100
- -100 <= matrix[i][j] <= 100
dp[row][col]是经过 matrix[row][col]这点所能拿到的最小分数, 那就可以推导出 dp[row][col] = min(dp[row+1][col-1], dp[row][col], dp[row][col+1]), 因为我们可以从第一行里面任选一个元素开始下降, 所以 ans = min(dp[0][0], dp[0][1], …, dp[0]matrix[0].length - 1])
use std::collections::HashMap;
impl Solution {
fn dp(
matrix: &Vec<Vec<i32>>,
row: usize,
col: usize,
cache: &mut HashMap<(usize, usize), i32>,
) -> i32 {
if row == matrix.len() - 1 {
return matrix[row][col];
}
let left = if col > 0 {
if let Some(c) = cache.get(&(row + 1, col - 1)) {
*c
} else {
Solution::dp(matrix, row + 1, col - 1, cache)
}
} else {
i32::MAX
};
let right = if col < matrix[0].len() - 1 {
if let Some(c) = cache.get(&(row + 1, col + 1)) {
*c
} else {
Solution::dp(matrix, row + 1, col + 1, cache)
}
} else {
i32::MAX
};
let bottom = if row < matrix.len() - 1 {
if let Some(c) = cache.get(&(row + 1, col)) {
*c
} else {
Solution::dp(matrix, row + 1, col, cache)
}
} else {
i32::MAX
};
let ans = left.min(right).min(bottom) + matrix[row][col];
cache.insert((row, col), ans);
ans
}
pub fn min_falling_path_sum(matrix: Vec<Vec<i32>>) -> i32 {
let mut cache = HashMap::new();
let mut ans = i32::MAX;
for col in 0..matrix[0].len() {
ans = ans.min(Solution::dp(&matrix, 0, col, &mut cache))
}
ans
}
}
边栏推荐
- Move anaconda, pycharm and jupyter notebook to mobile hard disk
- 【点云处理之论文狂读经典版8】—— O-CNN: Octree-based Convolutional Neural Networks for 3D Shape Analysis
- [graduation season | advanced technology Er] another graduation season, I change my career as soon as I graduate, from animal science to programmer. Programmers have something to say in 10 years
- 【点云处理之论文狂读经典版11】—— Mining Point Cloud Local Structures by Kernel Correlation and Graph Pooling
- LeetCode 438. Find all letter ectopic words in the string
- On February 14, 2022, learn the imitation Niuke project - develop the registration function
- Crawler career from scratch (I): crawl the photos of my little sister ① (the website has been disabled)
- Save the drama shortage, programmers' favorite high-score American drama TOP10
- Temper cattle ranking problem
- LeetCode 75. Color classification
猜你喜欢
Spark 集群安装与部署
[point cloud processing paper crazy reading frontier version 8] - pointview gcn: 3D shape classification with multi view point clouds
LeetCode 75. Color classification
Spark structured stream writing Hudi practice
Utilisation de hudi dans idea
LeetCode 535. Encryption and decryption of tinyurl
AcWing 786. Number k
Flink学习笔记(八)多流转换
Hudi learning notes (III) analysis of core concepts
【点云处理之论文狂读前沿版10】—— MVTN: Multi-View Transformation Network for 3D Shape Recognition
随机推荐
【点云处理之论文狂读经典版11】—— Mining Point Cloud Local Structures by Kernel Correlation and Graph Pooling
State compression DP acwing 291 Mondrian's dream
Flink学习笔记(九)状态编程
[untitled] use of cmake
Overview of database system
AcWing 788. Number of pairs in reverse order
LeetCode 535. Encryption and decryption of tinyurl
Integrated use of interlij idea and sonarqube
Liteide is easy to use
Explanation of the answers to the three questions
STM32F103 can learning record
The idea of compiling VBA Encyclopedia
Numerical analysis notes (I): equation root
[point cloud processing paper crazy reading classic version 8] - o-cnn: octree based revolutionary neural networks for 3D shape analysis
[point cloud processing paper crazy reading frontier version 10] - mvtn: multi view transformation network for 3D shape recognition
Common formulas of probability theory
LeetCode 871. Minimum refueling times
Instant messaging IM is the countercurrent of the progress of the times? See what jnpf says
【点云处理之论文狂读前沿版11】—— Unsupervised Point Cloud Pre-training via Occlusion Completion
The "booster" of traditional office mode, Building OA office system, was so simple!