Leetcode--329. 矩阵中的最长递增路径

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

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

示例 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]。注意不允许在对角线方向上移动。

思路:可以看作有向图,在点(i,j)相邻的四个点中,从低的值到高的值有一条边

通过深度优先遍历可以解决,但是时间复杂度极高,因此想办法将找过的记录存下来,记忆化搜索。

dp[i][j]!=0时,表示被搜索过

class Solution {private int[][] dir = {{0,1},{0,-1},{1,0},{-1,0}};public int dfs(int dp[][],int matrix[][],int i,int j){if(dp[i][j]!=0){return dp[i][j];}dp[i][j]++;for(int[] ints : dir){int row = i+ints[0];int column = j+ints[1];if(row>=matrix.length||row<0||column<0||column>=matrix[0].length){continue;}if(matrix[i][j]<matrix[row][column]){dp[i][j] = Math.max(dp[i][j],dfs(dp,matrix,row,column)+1);}}return dp[i][j];}public int longestIncreasingPath(int[][] matrix) {if(matrix.length==0||matrix[0].length==0){return 0;}int dp[][]  = new int[matrix.length][matrix[0].length];int max = -2147483647>>1;for(int i=0;i<matrix.length;i++){for(int j=0;j<matrix[0].length;j++){max = Math.max(max,dfs(dp,matrix,i,j));}}return max;}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排序及查找----[(冒泡,快速)(拉格朗日,二分)]

代码展示: 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Text;5 using System.Threading.Tasks;6 7 namespace paixu8 {9 class Program10 {11 static void Main()12 {13 int[] Array { 1, 45…

因果作用推断、因果网络学习及其他

来源&#xff1a;久章智能 未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;云脑研究计划&#xff0c;构建互联网&#xff08;城市&#xff09;云脑技术和企业图谱…

学习《图解HTTP》有感

HTTP协议的出现主要是为了解决文本传输的难题&#xff08;大家互相共享文件没有一个规范&#xff09;&#xff0c;最初的设计理念是&#xff1a;借助多文档之间的关联形成超文本&#xff0c;成为相互参阅的WWW&#xff08;万维网&#xff09; 计算机和网络设备要通信&#xff…

mysql解决select * from 表名 (where + 约束条件为空)

mysql解决select * from 表名 (where 约束条件为空)&#xff0c;示例如下&#xff1a; SELECT * from tableName WHERE name is NULL; 从 tableName 表中查询 name 字段为空的记录。转载于:https://www.cnblogs.com/zrmw/p/9887655.html

通信人工智能的下一个十年(上)

来源&#xff1a;电信科学欧阳晔1, 王立磊1, 杨爱东1, 马利克萨哈2, 大卫贝兰格3,4, 高同庆5, 韦乐平6, 张亚勤71 亚信科技&#xff08;中国&#xff09;有限公司&#xff0c;北京 1001932 美国威瑞森电信公司&#xff0c;美国 纽约 100363 美国电话电报公司&#xff0c;美国 得…

[Swift]LeetCode19. 删除链表的倒数第N个节点 | Remove Nth Node From End of List

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…

CAS

cas&#xff1a;Compare and Swap&#xff0c;即比较再交换。 对CAS的理解&#xff0c;CAS是一种无锁算法&#xff0c;CAS有3个操作数&#xff0c;内存值V&#xff0c;旧的预期值A&#xff0c;要修改的新值B。当且仅当预期值A和内存值V相同时&#xff0c;将内存值V修改为B&…

大脑使用交叉存储,来区分现在和过去

来源&#xff1a;混沌巡洋舰在每一个清醒的时刻&#xff0c;人类和其他动物必须在我们对过去的记忆和对现在的意识两者中保持平衡。我们必须吸收关于周围世界的新的感官信息&#xff0c;同时保持对早期观察或事件的短期记忆。我们理解周围环境、学习、行动和思考的能力都依赖于…

CONTINUE...? ZOJ - 4033

CONTINUE...? ZOJ - 4033 题解&#xff1a;先计算一下总数sum是否是偶数&#xff0c;如果不是则不能分出来&#xff0c;如果是则从后面开始分&#xff0c;先把人分到1、3组&#xff0c;分完sum / 2这些人&#xff0c;如果恰好能够分成零&#xff0c;那么剩下前面的都分到2、4组…

对象在内存中的存储布局

对象头包含&#xff1a; markword(和锁相关的信息) 8字节 class pointer(说明对象属于哪个类)&#xff0c;jvm指针八字节&#xff0c;但是默认压缩&#xff0c;所有4个字节 对象体包含&#xff1a; instance word实例数据(例如int&#xff0c;这就占四个字节&#xff0c;l…

用研究新范式破解生命科学难题

来源&#xff1a;中国科学报 作者&#xff1a;丛斌&#xff08;中国工程院士&#xff09;采访整理&#xff1a;张思玮&#xff08;本报记者&#xff09;当今&#xff0c;世界科技正处于重大变革前夕。各领域科学家们一直积极地探索物质本质、宇宙本源、生命本质&#xff0c;并迫…

synchronized与volatile

synchronized实现过程&#xff1a; 1.Java代码&#xff1a;synchronized 2.字节码层级&#xff1a;monitorenter&#xff0c;monitorexit 3.执行过程中自动升级&#xff08;偏向->自旋->重量级锁&#xff09; 4.cpu汇编层级:lock comxchg 上图为双核cpu的内部构造&am…

redis 字符串数据(string)

Redis 字符串数据类型的相关命令用于管理 redis 字符串值&#xff0c;基本语法如下&#xff1a; 语法 redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 redis 127.0.0.1:6379> SET runoobkey redis OK redis 127.0.0.1:6379> GET runoobkey "redis" 在以上实例…

AI 技术与人类主体想象 ——基于人工直觉在线讨论的研究

来源&#xff1a; 人工智能哲学探索作者&#xff1a;雅克布约翰森&#xff08;英国圣玛丽大学&#xff09; 王鑫&#xff08;辽宁大学&#xff09;一、引言:AI、神经形态硬件、人工直觉AI 在媒体上的讨论越来越多,很多广为流行的专业网站上的相关探讨涵盖了 AI 发展的最新趋势和…

Java四种引用

强引用&#xff1a;没有使用时调用System.gc()会回收 eg&#xff1a;M m new M(); mnull;System.gc(); 软引用&#xff1a;内存不够时就回收 作用&#xff1a;一般使用在缓存时&#xff0c;比如把一些图片存储&#xff0c;内存不够时就自动回收 弱引用&#xff1a; 垃圾回…

js 控制页面跳转的5种方法

js 控制页面跳转的5种方法 编程式导航&#xff1a; 点击跳转路由&#xff0c;称编程式导航&#xff0c;用js编写代码跳转。 History是bom中的History.back是回退一页Histiory.go(1)前进一页History.go(-1)后退一页HandleClick(){Console.log(this.props.history);}This.props.h…

永动机与热力学定律

来源&#xff1a;力学酒吧 撰文&#xff1a;张伟伟热力学三大定律分别为能量守恒、熵增定律和绝对零度无法到达&#xff0c;人们对热力学定律的认识也是纠正永动机思想的过程&#xff0c;是人类“美好思想”不断“碰壁”的过程&#xff0c;这些“碰壁”对于个人成长有着深刻的启…

浅析ThreadLocal

线程本地变量 每个线程独立拥有&#xff0c;线程存在&#xff0c;ThreadLocal就一直存在。 使用场景&#xff1a;spring 事务 里面有m方法&#xff0c;m调用了m1&#xff0c;m2&#xff0c;比如m1&#xff0c;m2都去访问数据库 如果分别建立两个数据库连接&#xff0c;事务…

T-SQL删除存储过程

使用T-SQL脚本删除存储过程 语法&#xff1a; --声明数据库引用use 数据库名称;go --判断是否存在存储过程&#xff0c;如果存在则删除if exists(select * from sys.procedures where name存储过程名称)drop { proc | procedure } [架构名][.][存储过程名称];go 示例&#xff1…

工业机器人技术全解析,值得收藏!

来源&#xff1a;先进制造业一、工业机器人的发展背景1920年&#xff0c;捷克剧作家卡里洛奇别克在其科幻剧本《罗萨姆万能机器人制造公司》&#xff08;Rossums Universal Robots&#xff09;首次使用了ROBOT这个名词&#xff0c;之后便成为机器人的代名词。1938年3月&#xf…