Leetcode: Longest Increasing Path in a Matrix
来源:互联网 发布:mac 卸载 编辑:程序博客网 时间:2024/04/29 03:49
Given an integer matrix, find the length of the longest increasing path.
From each cell, you can either move to four directions: left, right, up or down. You may NOT move diagonally or move outside of the boundary (i.e. wrap-around is not allowed).
Example 1:
nums = [ [9,9,4], [6,6,8], [2,1,1]]
Return 4
The longest increasing path is [1, 2, 6, 9]
.
Example 2:
nums = [ [3,4,5], [3,2,6], [2,2,1]]
Return 4
The longest increasing path is [3, 4, 5, 6]
. Moving diagonally is not allowed.
比较简单,DFS+DP。
class Solution {public: int longestIncreasingPath(vector<vector<int>>& matrix) { if (matrix.empty() || matrix[0].empty()) { return 0; } int longestPath = 0; int rows = matrix.size(); int cols = matrix[0].size(); vector<vector<int>> lip(rows, vector<int>(cols)); for (int i = 0; i < rows; ++i) { for (int j = 0; j < cols; ++j) { if (lip[i][j] == 0) { lip[i][j] = calculateIncreasingPath(matrix, lip, i, j); } longestPath = max(longestPath, lip[i][j]); } } return longestPath; } int calculateIncreasingPath(vector<vector<int>>& matrix, vector<vector<int>>& lip, int i, int j) { if (lip[i][j] != 0) { return lip[i][j]; } lip[i][j] = 1; if (i > 0 && matrix[i][j] > matrix[i-1][j]) { lip[i][j] = max(lip[i][j], calculateIncreasingPath(matrix, lip, i - 1, j) + 1); } if (i < matrix.size() - 1 && matrix[i][j] > matrix[i+1][j]) { lip[i][j] = max(lip[i][j], calculateIncreasingPath(matrix, lip, i + 1, j) + 1); } if (j > 0 && matrix[i][j] > matrix[i][j-1]) { lip[i][j] = max(lip[i][j], calculateIncreasingPath(matrix, lip, i, j - 1) + 1); } if (j < matrix[0].size() - 1 && matrix[i][j] > matrix[i][j+1]) { lip[i][j] = max(lip[i][j], calculateIncreasingPath(matrix, lip, i, j + 1) + 1); } return lip[i][j]; }};
0 0
- leetcode Longest Increasing Path in a Matrix
- [LeetCode] Longest Increasing Path in a Matrix
- leetcode: Longest Increasing Path in a Matrix
- Leetcode: Longest Increasing Path in a Matrix
- leetcode:Longest Increasing Path in a Matrix
- [LeetCode]Longest Increasing Path in a Matrix
- [Leetcode]Longest Increasing Path in a Matrix
- Longest Increasing Path in a Matrix | leetcode
- LeetCode Longest Increasing Path in a Matrix
- 【Leetcode】Longest Increasing Path in a Matrix
- LeetCode:Longest Increasing Path in a Matrix
- [leetcode]Longest Increasing Path in a Matrix
- Leetcode Longest Increasing Path in a Matrix
- [LeetCode]Longest Increasing Path in a Matrix
- Leetcode 329. Longest Increasing Path in a Matrix
- LeetCode—329. Longest Increasing Path in a Matrix
- 【LEETCODE】329-Longest Increasing Path in a Matrix [Python]
- [leetcode] - 329. Longest Increasing Path in a Matrix
- putty提示Network error:Software caused connection abort
- Editplus配置成python开发环境
- ADO.NET之command录入数据-视图同步更新
- 【翻译自mos文章】在重建控制文件之前应该考虑的事情
- hdu 1936 Emoticons :-)
- Leetcode: Longest Increasing Path in a Matrix
- javaweb导出Excel数据与图片
- 单词替换
- 字符串去特定字符
- 魅族再次助推陌陌商业化,不遗余力为其洗白
- C#中IDispose接口的实现方法以及为什么这么实现?
- 魅族春晚广告耗尽预算?继续约陌陌
- 【B/S】Web服务器验证控件
- 安装Eclipse for MAC 苹果版