标签:
这道题有两种解法,第一种最好想吧,2次两分法,第二种是维度变换
详细解释ref http://www.cnblogs.com/springfor/p/3857959.html
public class Solution { public boolean searchMatrix(int[][] matrix, int target) { if(matrix==null || matrix.length==0 || matrix[0].length==0) return false; int low = 0, high = matrix.length-1; while(low<=high){ int mid = (low+high)/2; if(target==matrix[mid][0]){ return true; } else if(target < matrix[mid][0]){ high = mid-1; }else{ low = mid+1; } } int row = (high+low)/2; // 这个细节要想清楚 low = 0; high = matrix[0].length-1; while(low<=high){ int m = (low+high)/2; if(matrix[row][m]== target) { return true; }else if(matrix[row][m]> target){ high = m-1; }else{ low = m+1; } } return false; } }
标签:
原文地址:http://www.cnblogs.com/jiajiaxingxing/p/4430895.html