首页 > 代码库 > LeetCode-Search a 2D Matrix

LeetCode-Search a 2D Matrix

Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:Integers in each row are sorted from left to right.The first integer of each row is greater than the last integer of the previous row.For example,Consider the following matrix:[  [1,   3,  5,  7],  [10, 11, 16, 20],  [23, 30, 34, 50]]Given target = 3, return true.

 

 

 

 

public class Solution {    public boolean searchMatrix(int[][] matrix, int target) {        boolean found=false;        if(matrix==null){            return found;        }        int m=matrix.length;        int n=matrix[0].length;                int upRow=0;        int downRow=m-1;                while(upRow<=downRow){            if(target<=matrix[upRow][n-1]){                found=binarySearch(matrix, upRow, target);                break;            }            else if(target>=matrix[downRow][0]){                found=binarySearch(matrix, downRow, target);                break;            }            else{                upRow++;                downRow--;            }        }        return found;    }        public boolean binarySearch(int[][]matrix, int row, int target){        int m=matrix.length;        int n=matrix[0].length;                int left=0;        int right=n-1;                boolean found=false;        while(left<=right){            int mid=left+(right-left)/2;            if(matrix[row][mid]==target){                found=true;                break;            }            else if(matrix[row][mid]<target){                left=mid+1;            }            else{                right=mid-1;            }        }        return found;    }}

 

LeetCode-Search a 2D Matrix