1public boolean searchMatrix(int[][] matrix, int target) {
2 int m = matrix.length;
3 int n = matrix[0].length;
4 int left = 0;
5 int right = m * n - 1;
6
7 while (left <= right) {
8 int mid = (left + right) / 2;
9 int row = mid / n;
10 int col = mid % n;
11
12 if (matrix[row][col] == target) {
13 return true;
14 } else if (matrix[row][col] < target) {
15 left = mid + 1;
16 } else {
17 right = mid - 1;
18 }
19 }
20
21 return false;
22}