題目
解題思路
這道題本質就是二分搜索法=-=
首先給出的m*n矩陣是從上而下從左到右的遞增,也可以看作是一個遞增的長度爲m*n一維數組,通過二分搜索找到目標數字
具體代碼
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int m = matrix.size();
int n = m > 0 ? matrix[0].size() : 0;
// 看作是一個遞增的長度爲m*n一維數組
int start = 0, end = m * n - 1;
int mid = 0;
while (start <= end) {
// 中間下標
mid = start + (end - start) / 2;
// 一維數組第mid個數字也就是二維數組的[mid/n][mid%n]數字
if (matrix[mid/n][mid%n] < target) {
start = mid + 1;
}
else if (matrix[mid/n][mid%n] > target) {
end = mid - 1;
}
else { // 找到對應的數字
return true;
}
}
return false;
}
};