首页 > 编程语言 >互联网公司最常见的面试算法题有哪些?

互联网公司最常见的面试算法题有哪些?

时间:2023-08-11 23:36:02浏览次数:47  
标签:动画 题有 步骤 元素 面试 算法 序列 排序

很多时候,你即使提前复习了这些最常见的面试算法题,你依旧无法通过算法面试!

为什么?

  1. 你在提前准备复习的时候,在网上找了半天相应题目的分析文章,但你看了就是不懂。
  2. 你在面试的时候,卡壳了,一时间忘了怎么写代码了

怎么办?

我来助你一臂之力!!

为了避免知乎大佬觉得我吹逼,先贴一下自己的 GitHub 地址,目前 20 k star。

12月初,将图解算法项目放到了GitHub上面去,短短两天登上了 trending 版第一的位置,点击这了解如何

我是如何 21天,在Github上获取 6300 star 的。



互联网公司最常见的面试算法题有哪些?_数组



互联网公司最常见的面试算法题有哪些?_公众号_02



互联网公司最常见的面试算法题有哪些?_公众号_03

目前有 16k star

----------------------------------------------------------------------------------------------

我将那几个有意思的经典互联网公司的面试题目都详细的分析了一遍,每个题目都写了比较详细的分析过程,大部分文章都配了动画,目前还在持续更新中。。。

配了动画是为了加强理解,并且希望等你面试的时候没有思路,通过动画能联想起来!(觉得有帮助的,记得点个赞关注走一波,谢谢大家)

-------------------------------------------------------------------------------

1. 给你一个长度为 n 的数组,其中只有一个数字出现了奇数次,其他均出现偶数次,问如何使用优秀的时空复杂度快速找到这个数字。


一道让你拍案叫绝的算法题


2. 假设有 100 层的高楼,给你两个完全一样的鸡蛋。请你设计一种方法,能够试出来从第几层楼开始往下扔鸡蛋,鸡蛋会碎。 请问最坏情况下,至少需要试验多少次才能知道从第几层楼开始往下扔鸡蛋,鸡蛋会碎。


一道腾讯面试题:厉害了我的杯


3. 请设计一个 LRU 算法。


看动画轻松理解「链表」实现「LRU缓存淘汰算法」


4.什么是动态规划? 30 张图片动画详细分析!


看动画轻松理解「递归」与「动态规划」


2019年04月25日补充:

我按标签用动画整理了一下 LeetCode 的题目,可以按需查看。


链表算法面试问题?看我就够了!

几道和「二叉树」有关的算法面试题

几道和散列(哈希)表有关的面试题

几道和「堆栈、队列」有关的面试算法题

有点难度,几道和「滑动窗口」有关的算法面试题

几道和「黑洞照片」那种海量数据有关的算法问题

几道 BAT 算法面试中经常问的「字符串」问题


更多类似的算法题分析,请前往我的个人博客 https://www.cxyxiaowu.com 或我的原创公众号「五分钟学算法」中进行阅读。

当然,大佬们都说过,学算法之前起码得了解数据结构呀

你是否当程序员这么多年,还只是能手写出个冒泡排序的代码?

别怕!

我也将程序员常见常用的那些数据结构都配了大量的图片和动画进行讲解,相信你看了一定能有所收获!

比如我做了十大经典排序动画,你看着动画应该能理解吧。

下文中所有文章的配图动画耗费了我大量的时间和精力,在本文最后部分把这个 动画和算法学习书籍 分享给大家,觉得有用的麻烦点赞关注走一波,谢谢!!!

下文中所有文章的配图动画耗费了我大量的时间和精力,在本文最后部分把这个 动画和算法学习书籍 分享给大家,觉得有用的麻烦点赞关注走一波,谢谢!!!

1. 冒泡排序

1.1 算法步骤

  • 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  • 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
  • 针对所有的元素重复以上的步骤,除了最后一个。
  • 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

1.2 动画演示



互联网公司最常见的面试算法题有哪些?_数组_04

2. 选择排序

2.1 算法步骤

  • 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
  • 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
  • 重复第二步,直到所有元素均排序完毕。

2.2 动画演示



互联网公司最常见的面试算法题有哪些?_公众号_05

3. 插入排序

3.1 算法步骤

  • 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
  • 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

3.2 动画演示



互联网公司最常见的面试算法题有哪些?_数组_06

4. 希尔排序

4.1 算法步骤

  • 选择一个增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;
  • 按增量序列个数 k,对序列进行 k 趟排序;
  • 每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。仅增量因子为 1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。

4.2 动画演示



互联网公司最常见的面试算法题有哪些?_数组_07

5. 归并排序

5.1 算法步骤

  • 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;
  • 设定两个指针,最初位置分别为两个已经排序序列的起始位置;
  • 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置;
  • 重复步骤 3 直到某一指针达到序列尾;
  • 将另一序列剩下的所有元素直接复制到合并序列尾。

5.2 动画演示



互联网公司最常见的面试算法题有哪些?_数据_08

6. 快速排序

6.1 算法步骤

  • 从数列中挑出一个元素,称为 “基准”(pivot);
  • 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
  • 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;

6.2 动画演示



互联网公司最常见的面试算法题有哪些?_数组_09

7. 堆排序

7.1 算法步骤

  • 创建一个堆 H[0……n-1];
  • 把堆首(最大值)和堆尾互换;
  • 把堆的尺寸缩小 1,并调用 shift_down(0),目的是把新的数组顶端数据调整到相应位置;
  • 重复步骤 2,直到堆的尺寸为 1。

7.2 动画演示



互联网公司最常见的面试算法题有哪些?_公众号_10

8. 计数排序

8.1 算法步骤

  • 花O(n)的时间扫描一下整个序列 A,获取最小值 min 和最大值 max
  • 开辟一块新的空间创建新的数组 B,长度为 ( max - min + 1)
  • 数组 B 中 index 的元素记录的值是 A 中某元素出现的次数
  • 最后输出目标整数序列,具体的逻辑是遍历数组 B,输出相应元素以及对应的个数

8.2 动画演示



互联网公司最常见的面试算法题有哪些?_数据_11

9. 桶排序

9.1 算法步骤

  • 设置固定数量的空桶。
  • 把数据放到对应的桶中。
  • 对每个不为空的桶中数据进行排序。
  • 拼接不为空的桶中数据,得到结果

9.2 动画演示



互联网公司最常见的面试算法题有哪些?_公众号_12

10. 基数排序

10.1 算法步骤

  • 将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零
  • 从最低位开始,依次进行一次排序
  • 从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列

10.2 动画演示



互联网公司最常见的面试算法题有哪些?_数组_13

为了让文章加载动画更快,录制动画时进行了压缩,有可能会模糊,如果你想获取上述文章的所有超清动画,请在公众号「五分钟学算法」内回复 MP4 进行获取。

不仅是这些,像上面 栈、队列、堆、二叉树、图等各种结构,我都配了大量的图片和动画进行讲解。你看完肯定有收获!

看动画轻松理解「 堆 」

冰与火之歌:「时间」与「空间」复杂度

数据结构与算法--2-3-4树

详解什么是平衡二叉树(AVL)(修订补充版)

动画:什么是散列表?


大家一起加油~

❤️ 看完三件事:

如果你觉得这篇内容对你挺有启发,我想邀请你帮我三个忙:

  1. 点赞,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-
  2. 关注我和专栏,让我们成为长期关系
  3. 关注公众号「五分钟学算法」



互联网公司最常见的面试算法题有哪些?_数据_14



标签:动画,题有,步骤,元素,面试,算法,序列,排序
From: https://blog.51cto.com/csnd/7053955

相关文章

  • #yyds干货盘点# LeetCode程序员面试金典:打家劫舍 II
    题目:你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金......
  • 「算法与数据结构」从入门到进阶吐血整理推荐书单
    一.入门系列这些书籍通过图片、打比方等通俗易懂的方法来讲述,让你能达到懂一些基础算法,线性表,堆栈,队列,树,图,DP算法,背包问题等,不要求会实现,但是看过以下这些书对于之后实现算法打下坚实的思维基础。很适合在闲暇之余拿出来阅读一番。1.1《啊哈!算法》这不过是一本有趣的算法书而......
  • #yyds干货盘点# LeetCode程序员面试金典:两整数之和
    1.简述:给你两个整数 和 ,不使用 运算符  和  ,计算并返回两整数之和。ab+- 示例1:输入:a=1,b=2输出:3示例2:输入:a=2,b=3输出:52.代码实现:classSolution{publicintgetSum(inta,intb){while(b!=0){intcarry=(a&b)<<1;......
  • 想进大厂?先把这些数据结构与算法学明白!!!
    *文末有1元解锁专栏福利今天聊聊掌握了不一定能拿到大厂Offer,但不掌握一定进不去大厂的神技「数据结构与算法」。为什么突然提到了数据结构与算法呢?这要从一个朋友的吐槽开始。我这位朋友一心想进大厂,学历还不错、能力也不错,但就是拿不到大厂Offer。大家都劝他多刷LeetCode,把......
  • 代码随想录算法训练营第十六天| 104.二叉树的最大深度 111.二叉树的最小深度 222.
      104.二叉树的最大深度 (优先掌握递归)    卡哥建议:什么是深度,什么是高度,如何求深度,如何求高度,这里有关系到二叉树的遍历方式。大家要先看视频讲解,就知道以上我说的内容了,很多录友刷过这道题,但理解的还不够。   题目链接/文章讲解/视频讲解:https://programmerc......
  • 快速幂算法
    快速幂算法快速幂算法是一种高效的计算幂的方法,它的核心思想是将指数分解为二进制形式,然后通过迭代计算得到结果。本文将详细介绍快速幂算法的原理、流程以及C++代码实现,并给出一个例题及题解。原理快速幂算法的基本思想是将指数表示为二进制形式,然后通过迭代计算得到结果。具......
  • 代码随想录算法训练营第十五天| 层序遍历 10 ,226.翻转二叉树 101.对称二叉树 2
     层序遍历   卡哥建议:看完本篇可以一口气刷十道题,试一试, 层序遍历并不难,大家可以很快刷了十道题。  题目链接/文章讲解/视频讲解:https://programmercarl.com/0102.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.html  做题思......
  • C++欧几里得算法求最大公约数和最小公倍数
    定义最大公约数即为GreatestCommonDivisor,常缩写为gcd。一组整数的公约数,是指同时是这组数中每一个数的约数的数。一组整数的最大公约数,是指所有公约数里面最大的一个。那么如何求最大公约数呢?我们先考虑两个数的情况。欧几里得算法过程如果我们已知两个数\(a\)和\(......
  • 谷歌2023年4月19日最新更新规则及算法
    多年来,谷歌的的核心排名系统一直致力于奖励能够提供良好网页体验的内容,正如谷歌在 2011年提供的2019年更新,并于去年加入创建实用、可靠、以用户为中心的内容帮助页面的指南中所述。该帮助页面是谷歌的搜索要素的关键资源。会定期推荐希望使用Google搜索取得理想成效的用户,仔......
  • 算法练习-day46
    单调栈739.每日温度题意:给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。实例:思路:本题作为单调栈的第一道题,我们需要了解什么是单调栈?单调栈中存储......