【leetcode hot 100 240】搜索二维矩阵Ⅱ

解法一:直接查找

java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        for(int i=0; i<matrix.length; i++){
            for(int j=0; j<matrix[0].length; j++){
                if(matrix[i][j]>target){
                    break;
                }
                if(matrix[i][j]==target){
                    return true;
                }
            }
        }
        return false;
    }
}

解法二:二分查找

java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        for (int[] row : matrix) {
            int index = search(row, target);
            if (index >= 0) {
                return true;
            }
        }
        return false;
    }

    public int search(int[] nums, int target) {
        int low = 0, high = nums.length - 1;
        while (low <= high) {
            int mid = (high - low) / 2 + low;
            int num = nums[mid];
            if (num == target) {
                return mid;
            } else if (num > target) {
                high = mid - 1;
            } else {
                low = mid + 1;
            }
        }
        return -1;
    }
}

注意:

  • mid = (high - low) / 2 + low

解法三:(Z 字形查找)从右上角开始查找,若matrix[i][j]>target,则列减少;若matrix[i][j]<target,则列增加。

java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int i=0, j=matrix[0].length-1;
        while(i<matrix.length && j>=0){
            if(matrix[i][j]==target){
                return true;
            }
            if(matrix[i][j]>target){
                j--;
            }
            else{
                i++;
            }
        }
        return false;
    }
}
相关推荐
鱼跃鹰飞14 小时前
Leetcode1891:割绳子
数据结构·算法
️停云️14 小时前
【滑动窗口与双指针】不定长滑动窗口
c++·算法·leetcode·剪枝·哈希
码农小韩15 小时前
基于Linux的C++学习——指针
linux·开发语言·c++·学习·算法
wen__xvn15 小时前
第 34 场 蓝桥·算法入门赛·百校联赛
算法
ASD125478acx15 小时前
超声心动图心脏自动检测YOLO11-NetBifPN算法实现与优化
算法
无限进步_16 小时前
【C语言&数据结构】对称二叉树:镜像世界的递归探索
c语言·开发语言·数据结构·c++·git·算法·visual studio
星辞树16 小时前
揭秘阿里 DIN:当深度学习遇上“千物千面”
算法
刘立军16 小时前
如何选择FAISS的索引类型
人工智能·算法·架构
小芒果_0117 小时前
整理归并排序
c++·算法·排序算法·信息学奥赛
牛三金17 小时前
匿踪查询沿革-Private Information Retrieval(PIR)
算法·安全