day12 leetcode-hot100-21(矩阵4)

240. 搜索二维矩阵 II - 力扣(LeetCode)

1.暴力法O(m*n)

思路:两层for循环即可。

2.二分查找O(m*logn)

思路:每行都用二分查找,因为每行都是排好序的

java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        for(int[] row : matrix){
            if(search_t(row,target)){
                return true;
            }

        }
        return false;
        
    }

    public boolean search_t(int[] nums,int t){
        int l=0;
        int r=nums.length-1;
        

        while(l<=r){
            int mid=(r-l)/2+l;
            if(nums[mid]==t){
                return true;
            }
            if(nums[mid]>t){
                r=mid-1;
            }
            if(nums[mid]<t){
                l=mid+1;
            }
        }
        return false;
    }


}

3.Z字搜索

思路

因为每行都是递增的,每列也是递增的,所以我们可以选择从右上角开始遍历,遇到大于target的那就向左走,遇到小于target那就向下走。

具体代码
java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int n=matrix[0].length;
        int x=0;
        int y=n-1;

        while(x<=matrix.length-1 && y>=0){
            if(matrix[x][y]==target){
                return true;
            }
            if(matrix[x][y]>target){
                y--;
            }
            else{
                x++;
            }
        }
        return false;
        
    }


}
相关推荐
梁辰兴1 小时前
数据结构:排序
数据结构·算法·排序算法·c·插入排序·排序·交换排序
Lris-KK1 小时前
【Leetcode】高频SQL基础题--1731.每位经理的下属员工数量
sql·leetcode
野犬寒鸦1 小时前
力扣hot100:搜索二维矩阵 II(常见误区与高效解法详解)(240)
java·数据结构·算法·leetcode·面试
菜鸟得菜1 小时前
leecode kadane算法 解决数组中子数组的最大和,以及环形数组连续子数组的最大和问题
数据结构·算法·leetcode
楼田莉子2 小时前
C++算法专题学习——分治
数据结构·c++·学习·算法·leetcode·排序算法
一支鱼2 小时前
leetcode常用解题方案总结
前端·算法·leetcode
ulias2123 小时前
各种背包问题简述
数据结构·c++·算法·动态规划
m0_570466413 小时前
代码随想录算法训练营第二十八天 | 买卖股票的最佳实际、跳跃游戏、K次取反后最大化的数组和
java·开发语言·算法
吃着火锅x唱着歌3 小时前
LeetCode 1537.最大得分
算法·leetcode·职场和发展
数模加油站3 小时前
25高教社杯数模国赛【C题超高质量思路+可运行代码】第十弹
算法·数学建模·数模国赛·高教社杯全国大学生数学建模竞赛