题目描述
点这里.
思路分析
模拟题。
方法一:暴力做法遍历一边即可,O(NM)
方法二:从左下角(x,y)处的值和target对比,移动x,y。本质上是双指针,一次排除一行的情形。(双指针本质上就是对暴力枚举的优化)
另外注意判空。
代码实现
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int n=array.size(),m=array[0].size();
if(n==0||m==0) return false;
int x=n-1,y=0;
while(x>=0&&y<m){
if(array[x][y]>target) x--;
else if(array[x][y]<target) y++;
else return true;
}
return false;
}
};