题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
书上思路:返回缩小的方法每次一行或者一列
- 从右上方,当前值大于目标值,缩短一列,否则缩短一行
 - 从左下方,当前值大于目标值,缩短一行,否则缩短一列
 
class Solution {
public:
    bool Find(int target, vector<vector<int> > array) {
        bool flag = false;
        int r = array.size();// 获取行数
        int c = array[0].size();// 获取行的元素个数
        // 横纵查找,
        // i 为纵向,负责从小到大遍历
        // j 为横向,负责从大到小遍历
        for (int i = 0,j = c - 1;i < r && j >= 0;){
            if (array[i][j] == target){
                flag = true;
                break;
            }
            if (array[i][j] > target){ // 当前值大了
                j--; // 行缩
            }else { // 当前值小了
                i++; // 列缩 
            }
        }
        return flag;
    }
};
      
       转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1056615746@qq.com