329. Longest Increasing Path in a Matrix
来源:互联网 发布:pdf.js 打开 word文档 编辑:程序博客网 时间:2024/05/22 13:57
这道题是说,给定一个矩阵,求里面最长的递增路径。
这道题是用dfs+动态规划的方法。
首先应该能想到dfs,枚举矩阵所有的位置(i,j),寻找从(i,j)开始的递增路径。为了免去过程中某个位置开始的递增路径的重复计算,需要一个dp,记录已经计算过最长递增路径的结果,如果已经计算过了直接返回dp[i][j]即可。
class Solution {public: vector<vector<int>> pos = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; int longestIncreasingPath(vector<vector<int>>& matrix) { if(matrix.empty() || matrix[0].empty()) return 0; int res = 1; vector<vector<int>> dp(matrix.size(), vector<int>(matrix[0].size(), 0)); for(int i = 0; i < matrix.size(); ++i){ for(int j = 0; j < matrix[0].size(); ++j){ res = max(res, helper(matrix, dp, i, j)); } } return res; } int helper(vector<vector<int>>& matrix, vector<vector<int>>& dp, int i, int j){ if(dp[i][j] > 0) return dp[i][j]; int res = 1; for(auto a : pos){ int x = i + a[0]; int y = j + a[1]; if(x >= 0 && x < matrix.size() && y >= 0 && y < matrix[0].size() && matrix[x][y] > matrix[i][j]){ int len = helper(matrix, dp, x, y) + 1; res = max(res, len); } } dp[i][j] = res; return res; }};
阅读全文
0 0
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- 329. Longest Increasing Path in a Matrix
- leetcode Longest Increasing Path in a Matrix
- Java线程
- C++高级编程 第十章: 探索继承技术
- uva1262(编码与解码)
- 大数据处理平台Hadoop之浅析
- 当RPM包安装遇上“依赖性”问题时的解决办法
- 329. Longest Increasing Path in a Matrix
- 【Scikit-Learn 中文文档】随机梯度下降
- 欢迎使用CSDN-markdown编辑器
- div 层基础知识
- RMQ模板题 poj3264 Balanced Lineup
- 剑指offer:数组中重复的数字
- 最大子段-n上找m个子段的和为最大-动态规划-二维dp+滚动数组dp优化
- 彻底剖析numpy的数值运算
- 模拟好题 CodeForces 864CBus