您当前的位置: 首页 > 

TechGuide

暂无认证

  • 4浏览

    0关注

    176博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【每日一题】JZ1:二维数组中的查找

TechGuide 发布时间:2021-08-18 22:17:23 ,浏览量:4

当你的才华还撑不起你的野心时,你应该静下心去学习 。 。 题目描述

在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 [ [1,2,8,9], [2,4,9,12], [4,7,10,13], [6,8,11,15] ]

给定 target = 7,返回 true。

给定 target = 3,返回 false。

0 1, 表示val右移一位相当于val/2,相当于 l+(r-l)/2,这样的写法是防止溢出。如果写成 mid = (l+r)/2; l+r可能会溢出。 3) 如果 tar == arr[mid],说明找到tar 4)比较:如果tar > arr[mid], 说明tar在区间[mid+1, r]中,l = mid + 1 5)如果tar < arr[mid],说明tar在区间[l, mid-1]中, r = mid - 1

方法3:现场手撕高效版 关键点在于利用矩阵升序的特性,需要选择合适的切入点与目标值相比较以缩小数据返围,很明显如果选择左上角或右下角当做切入点并不能起到只能分别排除一个选项,而如果选择右上角或者左下角进行比较即可起到更明显的效果。 算法复杂度为O(m+n) m 为matrix行数 n 为matrix列数

参考代码
class TechGuide {
    public boolean searchMatrix(int[][] matrix, int target) {
        if(matrix==null || matrix.length==0) return false;
        int x = matrix.length-1;
        int y = 0;
        while(x>=0 && y            
关注
打赏
1665329535
查看更多评论
0.0357s