这个题的重点是把握一个单调的规律。
左下角刚好满足这样的条件,如果目标比它大肯定在它右边,比它小肯定在它上边。
这个性质是解这个题的关键。找到这个性质,这个题就非常简单了。
bool Find(int target, vector<vector<int> > array) {
int m = array.size();
int n = array[0].size();
if(n == 0){
return false;
}
for(int i=0;i< m;i++){
if(target > array[i][n-1]){
continue;
}
for(int j=n-1;j>=0;j--){
if(target == array[i][j]){
return true;
}
}
}
// int r = 0, c = n-1; // 右上角元素
// while (r<m && c>=0) {
// if (target == array[r][c]) {
// return true;
// }
// else if (target > array[r][c]) {
// ++r;
// }
// else {
// --c;
// }
// }
return false;
}



京公网安备 11010502036488号