LeetCode0240.搜索二维矩阵II Go语言AC笔记

 时间复杂度:O(n)

解题思路

既然数组从左到右升序,从上到下升序,那我们一定要好好利用这个特性。

我们可以以第一行最后一列为起点,通过向左和向下移动来找我们的目标元素。那么何时向左走,何时向下走呢?从该二维数组的性质我们知道,向左走元素会越来越小,向下走元素会越来越大,所以当我们遍历到的元素比目标元素大时,我们需要向左走去寻找更小的元素,同理当我们遍历到的元素比目标元素小时,我们需要向下走去寻找更大的元素。

这样我们最多走M+N步就完成了搜索过程,M为行数,N为列数。

AC代码

func searchMatrix(matrix [][]int, target int) bool {
    i,j:=0,len(matrix[0])-1
    for i<len(matrix)&&j>=0{
        if matrix[i][j]==target{
            return true
        }else if matrix[i][j]<target{
            i++//向下寻找更大的数
        }else{
            j--//向左寻找更小的数
        }
    }
    return false
}

解题思路

总感觉该题特别特别熟悉,总感觉自己做过,但实在想不起来自己是在哪里做的了。不过大体的思路是正确的,走蛇形道就能完成目标元素的搜索。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SwithunH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值