Search a 2D Matrix

public class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        // Start typing your Java solution below
        // DO NOT write main() function
        if(matrix==null||matrix.length==0)return false;
        
        int row = matrix.length;
        int col = matrix[0].length;
        /*for(int i=0;i<row;i++)
            for(int j=0;j<col;j++){
                if(target==matrix[i][j])
                    return true;
            }
        return false;
        */
        int[] row_first = new int[row];
        for(int i=0;i<row;i++)
            row_first[i] = matrix[i][0];
        int row_search = binsearch(row_first,0,row-1,target);
        if(row_search==-1)return false;
        int len = matrix[row_search].length;
        int ans = erfen(matrix[row_search],0,len-1,target);
        if(ans==-1)return false;
        return true;
    
    }
    private int binsearch(int[] num,int low,int high,int target){
        if(low>high)return -1;
        int mid = (high-low+1)/2+low;
        if(num[mid]>target){
            return binsearch(num,low,mid-1,target);
        }
        else if(num[mid]==target)
            return mid;
        else{
            if(mid==num.length-1)return mid;
            if(num[mid+1]>target)return mid;
            else return binsearch(num,mid+1,high,target);
        }
    }
    private int erfen(int[] num,int low,int high,int target){
        if(low>high)return -1;
        int mid = (high-low+1)/2+low;
        if(num[mid]>target){
            return erfen(num,low,mid-1,target);
        }
        else if(num[mid]==target)
            return mid;
        else{
             return erfen(num,mid+1,high,target);
        }
    }
}
暴力400毫秒,這個居然比暴力還慢點。
發佈了83 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章