74&240. Search a 2D Matrix I & II
Input: matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
Output: trueclass Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) return false;
int row = matrix.length, col = matrix[0].length;
int begin = 0, end = row * col - 1;
if (target < matrix[0][0] || target > matrix[row - 1][col - 1]) return false;
while (begin + 1 < end) {
int mid = begin + (end - begin) / 2;
int midValue = matrix[mid / col][mid % col];
if (midValue == target) return true;
else if (midValue < target) begin = mid;
else end = mid;
}
if (matrix[begin / col][begin % col] == target) return true;
if (matrix[end / col][end % col] == target) return true;
return false;
}
}Last updated

