------------12.8二刷------------------
从另外一个起始点往下找,思路不变。
class Solution {
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
int i=0,j=matrix[0].size()-1;
while(i <=matrix.size()-1 && j >=0 )
{
if(matrix[i][j]>target) j--;
else if(matrix[i][j]<target) i++;
else return true;
}
return false;
}
};
------------一刷------------------------
题目描述
解法 递增查找法
之前刚好做过LeetCode的第一题<两数之和>,发现本质上的是同一个题目,这题可以说是它的简化版本,leetcode-01-两数之和,思路就不再赘述了。
class Solution {
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
int i=matrix.size()-1,j=0;
while(i >= 0 && j < matrix[0].size())
{
if(matrix[i][j]>target) i--;
else if(matrix[i][j]<target) j++;
else return true;
}
return false;
}
};
时间复杂度O(M+N)
最差情况M+N次
空间复杂度 O(1)