classSolution { public: boolsearchMatrix(vector<vector<int>>& matrix, int target){ int m = matrix.size(); int n = matrix[0].size(); int left = -1, right = m * n; while (left + 1 < right) { int mid = (right - left) / 2 + left; int x = mid / n, y = mid % n; if (matrix[x][y] == target) { returntrue; } elseif (matrix[x][y] > target) { right = mid; } else { left = mid; } } returnfalse; } };
classSolution { public: boolsearchMatrix(vector<vector<int>>& matrix, int target){ int m = matrix.size(); int n = matrix[0].size(); int left = 0, right = m; while (left < right) { int mid = left + (right - left) / 2; if (matrix[mid][0] <= target && matrix[mid][n - 1] >= target) { left = mid; break; } elseif (matrix[mid][0] < target) { left = mid + 1; } else { right = mid; } } int i = left; if (left >= m) { returnfalse; } left = 0; right = n; while (left < right) { int mid = left + (right - left) / 2; if (matrix[i][mid] == target) { returntrue; } elseif (matrix[i][mid] < target) { left = mid + 1; } else { right = mid; } } if (left >= n) { returnfalse; } return matrix[i][left] == target; } };