这个题的重点是把握一个单调的规律。
左下角刚好满足这样的条件,如果目标比它大肯定在它右边,比它小肯定在它上边。
这个性质是解这个题的关键。找到这个性质,这个题就非常简单了。
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; }