public boolean searchMatrix(int[][] matrix, int target) { if(matrix == null || matrix.length==0 || matrix[0].length==0) return false; int l = 0; int r = matrix.length-1; while(l<=r) { int mid = (l+r)/2; if(matrix[mid][0] == target) return true; if(matrix[mid][0] > target) { r = mid-1; } else { l = mid+1; } } int row = r; if(row<0) return false; l = 0; r = matrix[0].length-1; while(l<=r) { int mid = (l+r)/2; if(matrix[row][mid] == target) return true; if(matrix[row][mid] > target) { r = mid-1; } else { l = mid+1; } } return false; }二分查找是面试中出现频率不低的问题,可是非常少直接考二分查找。会考一些变体,除了这道题。还有Search in Rotated Sorted Array和Search for a Range。思路事实上差点儿相同,略微变化一下就可以。有兴趣能够练习一下哈。
Search a 2D Matrix -- LeetCode
原文:http://www.cnblogs.com/brucemengbm/p/7337377.html