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毫秒,這個居然比暴力還慢點。
Search a 2D Matrix
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.