![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
左神算法
pcwl1206
这个作者很懒,什么都没留下…
展开
-
【搞定左神算法初级班】第3节:栈、队列、链表、矩阵结构及相关常见面试题
目 录:一、栈题目1:用固定的大小的数组实现栈和队列题目2:能返回栈中最小元素的栈题目3:如何仅用队列结构实现栈结构?二、队列题目1:如何仅用栈结构实现队列结构?题目2:猫狗队列三、链表题目1:反转单向和双向链表题目2:给出两个有序链表的头结点,打印出两个链表中相同的元素题目3:判断一个链表是否为回文结构题目4:将单向链表按某值划分成左边小、中间相...原创 2019-03-26 22:12:18 · 2520 阅读 · 0 评论 -
【左神算法】一种接收消息并按顺序打印的结构设计
题目:一种消息接收并打印的结构设计:已知一个消息流会不断地吐出整数 1 ~ N,但不一定按照顺序吐出。如果上次打印的数为i,那么当 i + 1 出现时,请打印 i + 1 及其之后接收过的并且连续的所有数,直到 1 ~ N 全部接收并打印完,请设计这种接收并打印的结构。例如:消息流吐出 2,一种结构接收而不打印 2,因为 1 还没出现;消息流吐出 1,一种结构接收 1,并且打印:1,2。...原创 2019-07-24 12:27:43 · 691 阅读 · 0 评论 -
【搞定算法】找出数组中出现次数大于数组长度一半和 N/K 的数
博主秋招提前批已拿百度、字节跳动、拼多多、顺丰等公司的offer,可加微信:pcwl_Java 一起交流秋招面试经验。目 录:1、找出数组中出现次数大于数组长度一半的数2、找出数组中出现次数大于数组长度 N/K 的数1、找出数组中出现次数大于数组长度一半的数一个数组中出现次数大于数组长度一般的数显然最多只有一个。题目:在数组中找到出现次数大于数组长度一半的数。...原创 2019-07-25 14:18:55 · 4942 阅读 · 7 评论 -
【搞定算法】最长的可整合子数组的长度
题目:最长的可整合子数组的长度。给定一个整型数组 arr,请返回其中最大可整合子数组的长度。例如:[5,5,3,2,6,4,3] 的最大可整合子数组为[5,3,2,6,4],所以返回 5。先给出可整合数组的定义:如果一个数组在排序之后,每相邻两个数差的绝对值都为 1,则该数组为可整合数组。例如:[5,3,4,6,2] 排序之后为 [2,3,4,5,6],符合每相邻两个数差的绝对值都为 1,所...原创 2019-07-25 14:41:51 · 1120 阅读 · 0 评论 -
【搞定算法】需要排序的最短子数组长度
题目:给定一个无序数组 arr,求出需要排序的最短子数组长度。例如:arr = [1,5,3,4,2,6,7] 返回 4,因为只有 [5,3,4,2] 需要排序。要求:时间复杂度 O(N)、额外空间复杂度O(1)。假设数组为 [a b c d e f g h i j k l m n],如果 abc 是有序的,mn是 有序的,至于中间的 defghijkl 是无序的,我们可以得知,如果...原创 2019-07-25 15:16:19 · 1316 阅读 · 0 评论 -
【搞定算法】单调栈问题:直方图中的最大矩形面积、求最大子矩阵的大小、可见山峰问题
目 录:1、单调栈结构1.1、单调栈结构的实现:无重复元素1.2、单调栈结构的实现:有重复元素2、单调栈结构的应用2.1、直方图中的最大矩形面积2.2、求最大子矩阵的大小2.3、可见山峰问题本文主要用于讲解一种在面试笔试中经常使用到的一种算法结构:单调栈结构。1、单调栈结构单调栈结构:给一个数组,求任何位置左边和右边离它最近的比它大/小的数。要求:栈...原创 2019-07-22 15:57:29 · 2814 阅读 · 1 评论 -
【搞定算法】子数组最大累乘积
博主秋招提前批已拿百度、字节跳动、拼多多、顺丰等公司的offer,可加微信:pcwl_Java一起交流秋招面试经验,可获得博主的秋招简历和复习笔记。题目:给定一个 double 类型的数组 arr,其中的元素可正、可负、可 0,返回子数组累乘的最大乘积。例如:arr = [-2.5,4,0,3,0.5,8,-1],子数组 [3,0.5,8] 累乘可以获得最大的乘积 12,所以...原创 2019-07-26 11:03:05 · 730 阅读 · 1 评论 -
【搞定算法】数组的奇偶位置问题
博主秋招提前批已拿百度、字节跳动、拼多多、顺丰等公司的offer,可加微信:pcwl_Java一起交流秋招面试经验,可获得博主的秋招简历和复习笔记。题目:给定一个整型数组,请在原地调整这个数组,保证要么偶数位置上都是偶数,或者奇数位置上都是奇数。要求:时间复杂度 O(N),额外空间复杂度 O(1)。这个题目需要注意的是:偶数在偶数的位置、奇数在奇数的位置,这两个条件满足其一...原创 2019-07-26 11:18:49 · 1565 阅读 · 2 评论 -
【搞定算法】哈希表增加 setAll 功能
博主秋招提前批已拿百度、字节跳动、拼多多、顺丰等公司的offer,可加微信:pcwl_Java一起交流秋招面试经验,可获得博主的秋招简历和复习笔记。题目:哈希表常见的三个操作是 put、get 和 containsKey,而且这三个操作的时间复杂度为 O(1)。现在想加一个 setAll 功能,就是把所有记录的 value 都设成统一的值。请设计并实现这种有 setAll 功能的哈希...原创 2019-07-26 11:42:43 · 906 阅读 · 0 评论 -
【搞定算法】机器人走路问题
博主秋招提前批已拿百度、字节跳动、拼多多、顺丰等公司的offer,可加微信:pcwl_Java一起交流秋招面试经验,可获得博主的秋招简历和复习笔记。给定四个参数N、P、M、K。表示:N : 一共有1~N个位置P : 一共有P步要走M : 机器人初始停留在M位置上K : 机器人想要去的位置是K题目:已知,如果机器人来到 1 位置,那么下一步一定会走到 2 位置。如果机器人来到 ...原创 2019-07-26 14:40:10 · 1940 阅读 · 1 评论 -
【搞定算法】常见算法题分类总览
博主秋招提前批已拿百度、字节跳动、拼多多、顺丰等公司的offer,可加微信:pcwl_Java 一起交流秋招面试经验,可获得博主的秋招简历和复习笔记。完善中......由于本人平时刷题比较零散,有时候找起来不是很方便,所以统一将题目记录于此。主要的题目来源自:剑指 Offer、LeetCode、左神算法、面试、笔试、面经等等。下面按照分类记录:说明(个人见解):一、标注说明...原创 2019-07-26 15:24:05 · 25195 阅读 · 4 评论 -
【左神算法】给定一个数字组成的字符串,返回有多少种合法的 IPV4 组合
题目:给定一个数字组成的字符串 str,返回有多少种合法的 IPV4组合。举例:str = “245111”,只有一种合法 IPV4组合:245.1.1.1,所以返回 1str = “11111”,所有合法的 IPV4组合为:1.1.1.111.1.11.11.11.1.111.1.1.1所以返回 4str = “100111”,所有合法的 IPV4组合为:100...原创 2019-07-24 11:47:40 · 1851 阅读 · 3 评论 -
【搞定算法】BFPRT 算法、快排解决第 k 大数问题
博主秋招提前批已拿百度、字节跳动、拼多多、顺丰等公司的offer,可加微信:pcwl_Java 一起交流秋招面试经验。目 录:方法1:暴力解法方法2:快排实现【笔试版+面试版】方法3:BFPRT 算法实现【面试优化版】问题:求一个数组中的第 k 小 / 大的数。说明:这道题求解不难,主要的目的是为了引出 快排算法的应用(partiotion)和 BFPRT 算法...原创 2019-07-07 15:56:46 · 1752 阅读 · 1 评论 -
【搞定左神算法初级班】第6节:前缀树、贪心算法
目 录:一、前缀树:Prefix Tree1.1 前缀树题目举例:一个字符串类型的数组 arr1,另一个字符串类型的数组 arr21.2 前缀树的 insert、delete、search、prefixNum 方法二、贪心算法题目1:按最低字典序拼接字符串题目2:切分金条总代价最小题目3:最多做 K 个项目的最大利润题目4:安排最多的宣讲场次一、前缀树:Pref...原创 2019-03-30 21:08:25 · 1637 阅读 · 3 评论 -
【搞定左神算法初级班】第7节:暴力递归、动态规划
目 录:一、递归题目1:求 n! 的结果题目2:汉诺塔问题题目3:打印一个字符串的全部子序列,包括空字符串题目4:打印一个字符串的全部排列题目5:母牛每年生一只母牛,新出生的母牛成长三年后也能每年生一只母牛,假设不会死。求N年后,母牛的数量二、动态规划动态规划的特点如何把暴力递归套路变为动态规划题目1:矩阵最小路径和题目2:(背包问题)从数组任意选择数字...原创 2019-04-04 20:54:41 · 2080 阅读 · 3 评论 -
【搞定左神算法初级班】第4节:二叉树及相关常见面试题
目 录:题目1:实现二叉树的先序、中序、后序遍历【递归方式和非递归方式】题目2:在二叉树中找到一个节点的后继节点题目3:介绍二叉树的序列化和反序列化题目4:折纸问题题目5:判断一棵二叉树是否是平衡二叉树题目6、判断一棵树是否是搜索二叉树、判断一棵树是否是完全二叉树题目7:已知一棵完全二叉树,求其节点的个数题目1:实现二叉树的先序、中序、后序遍历【递归方式和非递归方式...原创 2019-03-28 22:04:38 · 1066 阅读 · 1 评论 -
【搞定算法】归并排序及其解决逆序对数、小和问题
归并排序也是分治法一个很好的应用,先递归到最底层,然后从下往上每次两个序列进行归并合起来,是一个由上往下分开,再由下往上合并的过程。而对于每一次合并操作,对于每一次 merge 的操作过程如下:1、准备一个额外的数组(help),使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;2、设定两个指针,最初位置分别为两个已经排序序列的起始位置;3、比较两个指针所指向的元素,选择...原创 2019-07-07 18:34:30 · 2823 阅读 · 2 评论 -
【搞定算法】二叉树信息收集问题(高度套路)
目 录:1、舞会的最大活跃度2、求一棵二叉树的最大搜索二叉子树的结点个数3、求一棵二叉树的最远距离最近看了左神的高阶算法视频,觉得很多算法题目解题思路确实是非常套路化的。本文整理了左神算法讲解中关于二叉树信息收集问题的高度套路。都是首先想好假设,想和子树要什么样的信息,然后自己拿到这个信息需要返回自己的什么信息。高度套路化:列出可能性 -> 从子过程收集的信息中整合出...转载 2019-07-04 11:48:37 · 563 阅读 · 0 评论 -
【搞定算法】蓄水池算法
1、问题描述分析采样问题经常会被遇到,比如:1、从 100000 份调查报告中抽取 1000 份进行统计;2、从一本很厚的电话簿中抽取 1000 人进行姓氏统计;3、从 Google 搜索 "Ken Thompson",从中抽取 100 个结果查看哪些是今年的。既然说到采样问题,最重要的就是做到公平,也就是保证每个元素被采样到的概率是相同的。所以可以想到要想实现这样的算法,就需...转载 2019-07-04 15:55:05 · 2906 阅读 · 1 评论 -
【搞定算法】KMP 算法
目 录:1、问题描述2、next 数组3、代码实现4、KMP 的应用4.1、子树问题4.2、加最短字符问题前面讲过字符串匹配的其他几种算法:字符串匹配算法之 BF、RK、BM。本文用来讲解 KMP 算法及其应用,KMP 算法时间复杂度为:O(N + M),空间复杂度为:O(M)。1、问题描述给定两个字符串 O 和 f,长度分别为 n 和 m,判断 f 是否...原创 2019-07-06 15:57:45 · 504 阅读 · 0 评论 -
【搞定算法】Manacher 马拉车算法
求一个字符串中的最长回文子串,这是一道经典的面试题目,解法有很多,详细可见:最长回文子串问题。其实个人感觉 Manacher 算法代码实现还是有一定难度的,真正在做题目的时候采用的可能性不是很大,但是由于 Manacher 算法求解回文子串方面的时间复杂度为 O(N),所以了解其思想还是很有必要的,coding 能力比较强的话,采用 Manacher 算法解决最长回文子串问题更是最合适不过了。...原创 2019-07-06 18:19:56 · 411 阅读 · 0 评论 -
【搞定算法】滑动窗口问题:窗口内最大值、最小值的更新结构
目 录:1、滑动窗口2、滑动窗口的应用2.1、生成窗口最大值数组 2.2、求一个数组中最大值减去最小值小于或等于 num 的子数组数量(要求O(N))1、滑动窗口生成窗口的最大值或者最小值数组,时间复杂度:O(N)。可阅读:https://www.cnblogs.com/haozhengfei/p/a14049ec0869a8125a69f3af37471c77.htm...原创 2019-07-18 15:34:19 · 3507 阅读 · 0 评论 -
【搞定算法】Morris 遍历二叉树:前序、中序、后序
目 录:1、Morris 遍历的基本概念2、Morris 的前序遍历3、Morris 的中序遍历4、Morris 的后序遍历其实之前的文章里已经记录了二叉树的递归/非递归遍历代码实现。但是由于 Morris 遍历可以实现最优的遍历方式,这无疑是在面试时遇到此问题非常加分的回答。1、Morris 遍历的基本概念Morris 遍历:时间复杂度 O(N)、额外空间复杂度 ...原创 2019-07-23 11:50:08 · 823 阅读 · 1 评论