zoukankan      html  css  js  c++  java
  • 剑指offer-01-二维数组中的查找

    前端算法也很重要,受别人☛汕大小吴的启发,觉得还是自己整理记录较为清晰,同时也督促自己不断学习。

    题目描述

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

    image

    题目分析

    第一反应是循环遍历,但耗时耗性能。

    《剑指Offer》上提及一个区块划分的概念,将二维数组画成矩形,如下图所示,优先对比最右侧的数字信息,若最右侧的第一个>target,则只需要与第一行的数据比较;若=,则即找到;若<,则第一行的所有数据均排除,继续最右侧的下一个数据与target进行比较。

    image

    代码

    function Find(target, array)
    {
        // write code here
        let i = 0;
        let j = array[i].length-1;
        for(;i<=array.length-1&&j>=0;){
            if(array[i][j]>target){
                j--;
            }else if(array[i][j]<target){
                i++;
            }else{
                return true;
            }
        }
        return false;
    }
    
  • 相关阅读:
    多态及鸭子类型
    面向对象三大特性之——继承
    类的组合
    类的成员和命名空间
    JAVA中常用的类
    JAVA自学笔记(5)
    JAVA自学笔记(4)
    JAVA自学笔记(3)
    JAVA自学笔记(2)
    JAVA自学笔记(1)
  • 原文地址:https://www.cnblogs.com/ShineaSYR/p/9531874.html
Copyright © 2011-2022 走看看