难度:中等。
标签:双指针,数组。
这个题的思路很有意思。
从数组的右上角开始找
- 如果当前值等于target,返回true
- 如果当前值大于target,左移一列
- 如果当前值小于target,下移一行
正确解法:
class Solution {
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
int n = matrix.size();
if(n == 0)return false;
int m = matrix[0].size();
int i = 0, j = m - 1;
while(j >= 0 && i < n){
if(matrix[i][j] == target){
return true;
}
else if(matrix[i][j] < target){
i++;
}
else if(matrix[i][j] > target){
j--;
}
}
return false;
}
};
结果: