LeetCode74 Search a 2D Matrix
阿新 • • 發佈:2018-12-26
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
Integers in each row are sorted from left to right.
The first integer of each row is greater than the last integer of the previous row.
Example 1:
Input:
matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 3
Output: true
Example 2:
Input:
matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 13
Output: false
public boolean searchMatrix(int[][] matrix, int target) { if(matrix == null || matrix.length == 0 || matrix[0].length == 0) return false; int row = matrix.length; int col = matrix[0].length; int l = 0; int r = row * col - 1; while(l <= r){ int mid = l + (r - l) / 2; int x = mid / col; int y = mid % col; if(matrix[x][y] == target) return true; else if(matrix[x][y] > target) r = mid - 1; else l = mid + 1; } return false; }