二维数组最长递增java_leetcode之329矩阵中的最长递增路径Golang

j解决这道题我采用的思路是深度优先遍历的方法类似于题目给出的样例的数组994668211然后对二维数组中的每个元素进行遍历,一次将他们作为序列的开头,找出这其中的最长的序列的长度就是本题的解了。由于序列必须递增,并且可以从上下左右任意的方向都行,我们再创建一个对应的二维数组,用来保存以对应位置作为开头的最长序列的长度112221342值得注意的是这个二维数组并不是我们算法的输出数组,这个数组只是用...
摘要由CSDN通过智能技术生成

j解决这道题我采用的思路是深度优先遍历的方法

类似于题目给出的样例的数组

9

9

4

6

6

8

2

1

1

然后对二维数组中的每个元素进行遍历,一次将他们作为序列的开头,找出这其中的最长的序列的长度就是本题的解了。

由于序列必须递增,并且可以从上下左右任意的方向都行,我们再创建一个对应的二维数组,用来保存以对应位置作为开头的最长序列的长度

1

1

2

2

2

1

3

4

2

值得注意的是这个二维数组并不是我们算法的输出数组,这个数组只是用来理解这个算法的。

上面这个二维数组怎么得来的呢,就是通过深度优先遍历的方法。例如对于位置(0,0)的元素9,那么找他上下左右的比他数字大的,发现没有,因此暂时将他的值保存为1(因为这个序列就只有他自己9这一个数字)

例如对于位于位置(2,1)的1来说,他的上面和左边的数都更大,所以我们需要继续增加序列的长度,比如从左边开始,左边是2,此时如果将2加到当前这个序列里面,那么2就位于这个序列的第二个位置,但是有一种特殊情况,如果2已经位于其他序列了,并且是位于更靠后的位置,那么我们此时就不能将2加入到我们当前的序列,因为2位于那一个序列的位置更加靠后,同理,如果2位于那个序列的位置更靠前,比如位于那个序列的位置1,那么我们就将2重新加入当前序列,并将位置改为2,然后2处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值