剑指Offer-数组

Posted kbinblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指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;

以上是关于剑指Offer-数组的主要内容,如果未能解决你的问题,请参考以下文章

刷题记录leetcode 剑指 Offer(第 2 版)03-11

剑指 Offer(第 2 版)完整题解笔记 & C++代码实现(LeetCode版)

剑指 Offer(第 2 版)完整题解笔记 & C++代码实现(LeetCode版)

剑指 offer 刷题记录

剑指Offer打卡目录(Java实现)

剑指offer:数组