64、二分-搜索二维矩阵

思路:

        通过使用二分方式,对于每行进行二分,因为每行的最后一个数小于下一行的第一个数,我们就可以依次二分。首先取出行数N,然后从0-N进行二分,如果mid最后一个数小于目标值说明0-mid中没有,舍弃,从mid+1到N-1行进行寻找。然后在进行二分直到找到或者便利完为止。代码如下:

class Solution {
   public boolean searchMatrix(int[][] matrix, int target) {
        if (matrix==null||matrix.length==0||matrix[0].length==0){
            return false;
        }
        
        int N=matrix.length;
        int M=matrix[0].length;
        //每一行都是递增序列
        //每一行第一个数都是大于前一行最后一个数===>每一列都是递增  每一列的数都是大于前一行任意数
        return process(matrix,M,0,N-1,target);
    }

    private boolean process(int[][] matrix, int M, int L, int R, int target) {
        if (matrix[L][0]>target||matrix[R][M-1]<target){
            return false;
        }
        if (L==R){
            int[] nums = matrix[L];
            for (int i = 0; i < nums.length; i++) {
                if (nums[i]==target){
                    return true;
                }
            }
            return false;
        }
        
        int mid=L+(R-L)/2;
        if (matrix[L][0]<=target&&matrix[L+(R-L)/2][M-1]>=target){
            return process(matrix,M,L,mid,target);
        }else{
            return process(matrix,M,mid+1,R,target);
        }
    }
}

相关推荐

  1. 搜索矩阵二分

    2024-05-01 15:46:03       63 阅读
  2. 搜索矩阵 II【矩阵】【二分

    2024-05-01 15:46:03       62 阅读
  3. E : B DS二分查找_搜索矩阵

    2024-05-01 15:46:03       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-01 15:46:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-01 15:46:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-01 15:46:03       82 阅读
  4. Python语言-面向对象

    2024-05-01 15:46:03       91 阅读

热门阅读

  1. 关于react native文件路径的烦心事

    2024-05-01 15:46:03       37 阅读
  2. 认识产品经理

    2024-05-01 15:46:03       29 阅读
  3. 软设之进程的状态

    2024-05-01 15:46:03       25 阅读
  4. AForge.NET是啥

    2024-05-01 15:46:03       37 阅读
  5. Falsk简介

    2024-05-01 15:46:03       30 阅读
  6. 注解式开发Spring

    2024-05-01 15:46:03       33 阅读
  7. mysql中的索引

    2024-05-01 15:46:03       33 阅读
  8. 数据库语法复习

    2024-05-01 15:46:03       31 阅读
  9. Redis:三种启动方式

    2024-05-01 15:46:03       30 阅读
  10. 虚拟机中new指令的秘密

    2024-05-01 15:46:03       40 阅读
  11. stm32mp135d u-boot 引导流程

    2024-05-01 15:46:03       34 阅读
  12. Python如何实现抽象工厂模式

    2024-05-01 15:46:03       34 阅读