【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;
    }
}
相关推荐
☆5663 分钟前
C++中的代理模式高级应用
开发语言·c++·算法
2301_818419014 分钟前
编译器命令选项优化
开发语言·c++·算法
m0_518019484 分钟前
C++图形编程(OpenGL)
开发语言·c++·算法
Jasmine_llq5 分钟前
《B4354 [GESP202506 一级] 假期阅读》
数据结构·算法·最值筛选算法(核心逻辑)·三元运算符简化分支算法·多输入顺序处理算法·整数算术运算算法·格式化输出算法
2301_816651229 分钟前
自定义异常类设计
开发语言·c++·算法
weixin_421922699 分钟前
C++与自动驾驶系统
开发语言·c++·算法
算法鑫探13 分钟前
C语言结构体:学生信息统计实战
c语言·数据结构·算法·新人首发
2501_9454248019 分钟前
高性能计算资源调度
开发语言·c++·算法
Tisfy27 分钟前
LeetCode 1594.矩阵的最大非负积:动态规划O(mn)
leetcode·矩阵·动态规划·dp
2301_7765087227 分钟前
C++中的组合模式变体
开发语言·c++·算法