矩阵中的最长递增路径

给定一个整数矩阵,找出最长递增路径的长度。

对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。

示例 1:

输入: nums =
[[9,9,4],[6,6,8],[2,1,1]
]
输出: 4
解释: 最长递增路径为 [1, 2, 6, 9]

示例 2:

输入: nums =
[[3,4,5],[3,2,6],[2,2,1]
]
输出: 4
解释: 最长递增路径是 [3, 4, 5, 6]这个题属于leetcode上hard级别的,主要思路就是创建一个二维数组dp[][]来保存当前(i,j)位置下最长的递增路径长度,把当前元素与它的上下左右四个位置的元素比较,如果大于或等于当前的元素,跳过,否则,与当前元素相连,构成路径,记录下长度,把最长的长度赋给dp[i][j].代码:
class Solution {int[][] dirs = {{-1,0},{1,0},{0,-1},{0,1}};//上下左右的位置点矩阵public int longestIncreasingPath(int[][] matrix) {if(matrix == null || matrix.length==0){return 0;}int m = matrix.length;int n = matrix[0].length;int[][]  dp = new int[m][n];int max = 0;for(int i=0;i<m;i++){for(int j=0;j<n;j++){max = Math.max(max,help(matrix,dp,i,j,m,n));}}return max;}public int help(int[][] matrix,int[][] dp,int i,int j,int m,int n){if(dp[i][j] != 0)return dp[i][j];int count = 1;for(int k=0;k<4;k++){int x = i + dirs[k][0];int y = j + dirs[k][1];if(x < 0 || x >= m || y < 0 || y >= n || matrix[x][y] <= matrix[i][j]) //上下左右元素大于等于当前元素跳出循环continue;int len = 1+help(matrix,dp,x,y,m,n);count = Math.max(count,len);}dp[i][j] = count;return count;}
}

leetcode探索动态规划(二)相关推荐

  1. LeetCode题解 - 动态规划-股票买卖

    LeetCode题解 - 动态规划-股票买卖 文章目录 LeetCode题解 - 动态规划-股票买卖 **一.穷举框架** **二.状态转移框架** **三.秒杀题目** 121. 买卖股票的最佳时机 ...

  2. 【LeetCode】动态规划入门(专项打卡21天合集)

    [LeetCode]动态规划入门(专项打卡21天合集) 下图为证 文章目录 [LeetCode]动态规划入门(专项打卡21天合集) Day1 斐波拉契数 第 N 个泰波那契数 Day2 爬楼梯 使用最 ...

  3. leetcode探索专题中的初级算法练习题(python代码+解题思路)

    本文记录leetcode探索专题中的初级算法练习题,附python实现代码&解题思路,做题过程不免查阅网络资料,侵删~如有错误,欢迎指正交流! 目录 专题一:数组: 26.从排序数组中删除重复 ...

  4. LeetCode 240. 搜索二维矩阵 II(二分查找 分治)

    文章目录 1. 题目 2. 解题 2.1 从左下角或者右上角开始搜索 2.2 分治算法 1. 题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以 ...

  5. android 动态规划,7. 动态规划(二)Android移动应用开发.pdf

    程序设计与算法(二) 算法基础 1 2 动态规划(二) 例题 Help Jimmy 圣彼得堡彼得霍夫宫 Help Jimmy(POJ1661) "Help Jimmy" 是在下图所 ...

  6. [二叉树遍历|BST]leetcode 538 把二叉搜索树转换为累加树

    [二叉树遍历|BST]leetcode 538 把二叉搜索树转换为累加树 1.题目 题目链接 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree) ...

  7. Leetcode 538. 把二叉搜索树转换为累加树 C++

    Leetcode 538. 把二叉搜索树转换为累加树 题目 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加 ...

  8. Docker在英雄联盟游戏中的实践探索(二)

    本文讲的是Docker在英雄联盟游戏中的实践探索(二),[编者的话]这篇博客是Riot的Docker实践系列博客的第二篇,主要内容是:基于Cloudbees镜像创建新的Dockerfile,设置了一个 ...

  9. c++ 动态规划-二维背包 and 潜水员问题

    动态规划 - 二维背包 1.普通二维(费用)背包 01背包问题:给定 n 种物品和一个重量(容量)(限定条件)为 w 的背包,物品 i 的重量是 wi,其价值为 vi.(每种物品只有一个)问:如何选择 ...

  10. Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game)

    Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game) 爱丽丝和鲍勃一起玩游戏,他们轮流行动.爱丽丝先手开局. 最初,黑板上有一个数字 N .在每个玩家的回合,玩家需 ...

最新文章

  1. C++ 从双重检查锁定问题 到 内存屏障的一些思考
  2. 《LeetCode力扣练习》第15题 C语言版 (做出来就行,别问我效率。。。。)
  3. 苹果天气不显示_iPhone6开机不显示苹果售后维修案例
  4. VTK:Utilities之ConstructTable
  5. 并行程序设计模式--Master-Worker模式
  6. 95-36-032-ChannelHandler-SimpleChannelInboundHandler
  7. b+树 b-树的区别
  8. Windows 8 Consumer Preview
  9. delphi oracle 分页,使用原生ADO对数据进行分页显示delphi数据库操作下载
  10. 学生学籍的计算机管理属于,随着计算机的飞速发展,其应用范围不断扩大,某学校学生学籍的计算机管理属于__应用领域。A.科学计...
  11. win10重新安装以太坊mist客户端
  12. 网易互娱2017实习生招聘在线笔试(二)
  13. webaudio ajax,Web Audio 入门之读取左右声道数据
  14. 批量识别图片文字并存为Excel,几行Python轻松实现!
  15. android 获取图片的真实地址
  16. Windows下使用pip时出现TSL/SSL错误解决方案
  17. Eclipse与谷歌输入法冲突
  18. Llinux装逼命令大全
  19. Vue学习(二)动态绑定与事件监听
  20. 藏文驾考科目一科目四理论题库

热门文章

  1. 使用fseek()函数随机访问文件
  2. [20151014]关于result cache.txt
  3. 15K薪资轻松到手,要低调~
  4. matlab linux 中文显示问题解决办法
  5. 50款漂亮的免费网页PSD模板下载(第三季)
  6. WCF服务可靠性传输配置与编程开发(转)
  7. 2.分布式服务架构:原理、设计与实战 --- 彻底解决分布式系统一致性的问题
  8. 7.卷2(进程间通信)---互斥锁和条件变量
  9. 7.Active Record
  10. jQuery中的bind() .live() .delegate()的区别