剑指Offer-数组

题目

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

思路

  • 数组是有序的,所以我们选取左下角或右上角作为一开始判断的依据
  • 假设选取左下角作为判断依据,输入的整数大于左下角的值,继续往右判断,小于的话向上一层移动,再继续判断

代码

function Find(target, array) {
    let len = array.length-1; //数组的行数
    let lenCol = array[0].length-1; //数组的列数 
    if(target<array[0][0] || target>array[len][lenCol]){ //进行临界值判断
        return false;
    }
    let i=len; //最后一行
    let j=0; //第一列
    while(i>0 && j<lenCol){
        if(target>array[i][j]){
            j++;
        }
        if(target<array[i][j]){
            i--;
        }
        if(target === array[i][j]){
            return true
        }
    }
    return false;

}

猜你喜欢

转载自www.cnblogs.com/kbinblog/p/11541765.html
今日推荐