1class Solution {2public boolean searchMatrix(int[][] matrix, int target) {3int rows = matrix.length;4int cols = matrix[0].length;5int lo = 0, hi = rows;6while (lo + 1 < hi) {7int mid = lo + (hi - lo) / 2;8if (matrix[mid][0] <= target) {9lo = mid;10} else {11hi = mid;12}13}14int[] prospect;15for (int i = 0; i <= lo; i++) {16prospect = matrix[i];17int l = 0;18int h = cols;19while (l + 1 < h) {20int mid = l + (h - l) / 2;21if (prospect[mid] <= target) {22l = mid;23} else {24h = mid;25}26}27if (prospect[l] == target) {28return true;29}30}31return false;32}33}