专栏首页Java那些事【大厂面试题】笔试题明明已经AC了,为什么还是把我挂掉了?乔戈里告诉你为什么

【大厂面试题】笔试题明明已经AC了,为什么还是把我挂掉了?乔戈里告诉你为什么

题目描述

给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。

Consider the following matrix:
[
  [1,   4,  7],
  [2,   5,  8],
  [3,   6,  9]
]

Given target = 5, return true.
Given target = 20, return false.
public class Solution {
    public boolean Find(int target, int [][] array) {
        if(array.length == 0)// 如果二维数组为空,直接返回false
            return false;
        for(int i=0;i<array.length;i++) {
            for(int j=0;j<array[i].length;j++){
                if(array[i][j] == target )
                    return true;
            }
        }
        return false;
    }
}

比如你要想找数字6,我们从数组矩阵右上角上的数字开始,右上角数字是7,而7>6

题目中二维数组的特性是从上到下递增,所以7所在的那列就不必去找了。

将7所在的所在的那列剔除掉,进入到下一列去比较。下一列的右上角是4,4<6

而按照二维数组的特性,数组是从左到右递增的,4已经小于6了,那么4左边的数肯定也小于6, 而 4 目前是右上角的数字,所以4所在的行就没必要去比较了。

将4所在的行删除掉,进入到下一行。可以看到目前右上角的数字是5了。我们只比较了两次,就已经剔除掉了一行一列了!斗宗强者,恐怖如此!

好,继续比较5和6,5由于小于6,按照之前的逻辑所以5所在这行剔除掉,进入到下一行。

而下一行中的右上角是6,最终我们找到了目标数字6。

Java

JS

PY

PHP

C++

这里面有Java、PHP、JS、Python、C++五种实现,妈妈再也不用担心你看不懂其它语言了。为了方便你理解,我还顺便制作了动画的形式。

这是乔戈里第一次尝试漫画、图解、动画、五种编程语言结合的方式讲解算法,基本从今天早上起来一直搞到现在了,耗时巨长,在看、转发、AD素质三连能安排一下不!乔戈里郑重承诺,如果本篇在看数超过 100 (定个小目标吧,我看人家隔壁Java3y在看都是150起步,哈哈),下周继续爆肝一篇,目标就是今年把剑指offer都安排上,然后进军leetcode和大厂笔试面试真题,筒子们,这(lian)样(ren)好不好啊!?

本文分享自微信公众号 - 程序员乔戈里(CXYqiaogeli),作者:乔戈里

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 每天一道leetcode442-数组中重复的数据

    乔戈里
  • 面试官问你什么是ZooKeeper?把这篇甩给他

    ZooKeeper相信大家已经听过这个词了,不知道大家对他了解多少呢?ZooKeeper也可以作为注册中心。后面听到ZooKeeper的时候,是因为ZooKee...

    乔戈里
  • 巧用 Redis Hyperloglog,轻松统计 UV 数据

    如果你正在开发一个基于“事件”的应用程序,该应用程序可以处理来自不同用户的许多请求,那么你很大可能希望能够计算滑动窗口或指定时间范围内不同的用户操作。

    乔戈里
  • 《剑指offer》二维数组中的查找——巧妙解法

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

    AI算法与图像处理
  • NumPy的广播机制

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    于小勇
  • Day42:和为S的两个数字

    思路二: 1.定义两个指针,第一个指向第一个元素,第二个指向最后一个元素; 2.先拿第一个元素和最后一个元素相加,与要求的数字进行比较;   1)如果...

    stefan666
  • php Array数组知识总结

    PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量...

    benny
  • 自己动手写数据结构之数组实现栈

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    suveng
  • [Leetcode][深度优先/回溯法/DFS]相关题目汇总/分析/总结

    // 递归,自身调用自身的迭代就是递归。 // 但是正式定义好像不是这么说的。这只是我个人理解

    后端技术漫谈
  • PHP数组知识汇总

    1.建立数组array() 2.array array_chunk ( array input, int size [, bool preserve_keys]...

    苦咖啡

扫码关注云+社区

领取腾讯云代金券