把整个数组看成一个sorted array,二分搜索。注意二分查找的写法。代码如下:
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int m = (int)matrix.size(), n;
if (m==0) {
return false;
} else {
n = (int)matrix[0].size();
}
int left = 0, right = m*n-1, mid;
while (left<=right) {
mid = left+((right-left)>>1);
int num = matrix[mid/n][mid%n];
if (num == target) {
return true;
} else if (num>target) {
right = mid-1;
} else {
left = mid+1;
}
}
return false;
}
};