74. 搜索二维矩阵

package leetcode;

public class demo_74 {
    public boolean searchMatrix(int[][] matrix, int target) {
        //如果目标值大于数组最大值或小于数组最小值,则不存在
        if(matrix[0][0]>target||matrix[matrix.length-1][matrix[0].length-1]<target) {return false;}
        int i;
        //找出目标值可能存在的行数
        for(i=0;i<matrix.length;i++) {
            if(matrix[i][matrix[0].length-1]>=target) {break;}
        }
        //如果当前行的最小值大于目标值,则不存在
        if(matrix[i][0]>target) {return false;}
        int left=0;
        int right=matrix[0].length-1;
        int mid;
        //二分法查找所在行可能的列数
        while(left<=right) {
            mid=(left+right)/2;
            if(matrix[i][mid]==target) {return true;}
            if(matrix[i][mid]>target) {right=mid-1;}
            if(matrix[i][mid]<target) {left=mid+1;}
        }
        return false;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        demo_74 d74=new demo_74();
        int[][] matrix= {{1,3,5,7},{11,13,16,20},{23,34,36,60}};
        System.out.println(d74.searchMatrix(matrix, 3));
    }

}

 

posted on 2021-06-05 10:39  一仟零一夜丶  阅读(58)  评论(0)    收藏  举报