CodingInterview-二维数组中的查找

这道题目可以从右上角开始算,如果右上角数字大于 target,那么该列数字都大于它,y–,如果右上角数字小于 target,那么该行数字都小于它,x++。

不过最需要注意的是这个二维数组的行数和列数可能不同,不要在这里犯错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public:
bool Find(int target, vector<vector<int>> array) {
if(array.size()<=0) return false;
int x=0;
int y=array[0].size()-1;
while(x<array.size() && y>=0){
int t=array[x][y];
if(t>target) y--;
else if(t<target) x++;
else return true;
}
return false;
}
};