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

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;
    }