search in 2d matrix
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int r = binarySearch(matrix,target);
        if(r ==-1)
            return false;
        boolean isfound = findbinary(matrix ,r, target);
        return isfound;
    }
    public static boolean findbinary(int[][] matrix , int r , int target){
        int l =0;
        int h = matrix[0].length-1;
        
        while(l<=h){
            int mid = l+(h-l)/2;
            if(matrix[r][mid]== target)
                return true;
            else if(matrix[r][mid]<target)
                l = mid+1;
            else
                h = mid-1;
        }
        return false;
    }
    
    
    public static int binarySearch(int[][] matrix , int target){
        int l =0;
        int h = matrix.length-1;
        int lc = matrix[0].length-1;
        while(l<=h){
            int mid = l+(h-l)/2;
            if(matrix[mid][0] <= target && matrix[mid][lc] >= target){
                return mid;
            }
            else if(matrix[mid][0] > target){
                h = mid-1;
            }
            else{
                l = mid +1;
            }
        }
        return -1;
    }
}
Comments (3)