一开始 [[]] 没过,我还以为是编译器错误 (/捂脸
class Solution { public: bool searchMatrix(vector<vector<int>> matrix, int target) { int min = -1, max = matrix.size(); if (max == 1 && matrix[0].empty()) return false; // 注意 [[]] 这种情况 while (min + 1 != max) { int mid = (min + max) / 2; if (matrix[mid][0] <= target && matrix[mid][matrix[0].size() - 1] >= target) { if (matrix[mid][0] == target || matrix[mid][matrix[0].size() - 1] == target) return true; min = -1, max = matrix[0].size(); while (min + 1 != max) { int mid_cols = (min + max) / 2; if (matrix[mid][mid_cols] == target) return true; else if (matrix[mid][mid_cols] > target) max = mid_cols; else min = mid_cols; } return false; } else if (target < matrix[mid][0]) max = mid; else if (target > matrix[mid][matrix[0].size() - 1]) min = mid; } return false; } };