摘要:
读完本文,你可以去力扣拿下如下题目: 130.被围绕的区域 990.等式方程的可满足性 希望你已经读了这篇题解 Union-Find 算法详解 上篇文章很多读者对于 Union-Find 算法的应用表示很感兴趣,这篇文章就拿几道 LeetCode 题目来讲讲这个算法的巧妙用法。 首先,复习一下,Un 阅读全文
posted @ 2020-11-15 14:19
labuladong
阅读(460)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 236.二叉树的最近公共祖先 如果说笔试的时候喜欢考各种动归回溯的骚操作,面试其实最喜欢考比较经典的问题,难度不算太大,而且也比较实用。 上篇文章 四个命令玩转 Git 写了 Git 最常用的命令,没有提分支合并,其实分支合并没什么困难的,主要就是 merge 阅读全文
posted @ 2020-11-15 13:58
labuladong
阅读(2457)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 560.和为K的子数组 今天来聊一道简单却十分巧妙的算法问题:算出一共有几个和为 k 的子数组。 那我把所有子数组都穷举出来,算它们的和,看看谁的和等于 k 不就行了。 关键是,如何快速得到某个子数组的和呢,比如说给你一个数组 nums,让你实现一个接口 sum 阅读全文
posted @ 2020-11-15 13:51
labuladong
阅读(931)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 43.字符串相乘 对于比较小的数字,做运算可以直接使用编程语言提供的运算符,但是如果相乘的两个因数非常大,语言提供的数据类型可能就会溢出。一种替代方案就是,运算数以字符串的形式输入,然后模仿我们小学学习的乘法算术过程计算出结果,并且也用字符串表示。 需要注意的是 阅读全文
posted @ 2020-11-15 13:46
labuladong
阅读(508)
评论(0)
推荐(0)
摘要:
今天讲讲 Union-Find 算法,也就是常说的并查集算法,主要是解决图论中「动态连通性」问题的。名词很高端,其实特别好理解,等会解释,另外这个算法的应用都非常有趣。 说起这个 Union-Find,应该算是我的「启蒙算法」了,因为《算法4》的开头就介绍了这款算法,可是把我秀翻了,感觉好精妙啊!后 阅读全文
posted @ 2020-11-15 10:33
labuladong
阅读(1749)
评论(0)
推荐(0)
摘要:
首先说明一个问题,简单阐述一下递归,分治算法,动态规划,贪心算法这几个东西的区别和联系,心里有个印象就好。 递归是一种编程技巧,一种解决问题的思维方式;分治算法和动态规划很大程度上是递归思想基础上的(虽然动态规划的最终版本大都不是递归了,但解题思想还是离不开递归),解决更具体问题的两类算法思想;贪心 阅读全文
posted @ 2020-11-15 10:31
labuladong
阅读(1398)
评论(0)
推荐(2)
摘要:
读完本文,你可以去力扣拿下如下题目: 191.位1的个数 231.2的幂 本文分两部分,第一部分列举几个有趣的位操作,第二部分讲解算法中常用的 n & (n - 1) 操作,顺便把用到这个技巧的算法题列出来讲解一下。因为位操作很简单,所以假设读者已经了解与、或、异或这三种基本操作。 位操作(Bit 阅读全文
posted @ 2020-11-15 10:29
labuladong
阅读(315)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 354.俄罗斯套娃信封问题 很多算法问题都需要排序技巧,其难点不在于排序本身,而是需要巧妙地排序进行预处理,将算法问题进行转换,为之后的操作打下基础。 信封嵌套问题就需要先按特定的规则排序,之后就转换为一个 最长递增子序列问题 的技巧来解决了。 一、题目概述 信 阅读全文
posted @ 2020-11-15 10:25
labuladong
阅读(508)
评论(0)
推荐(0)
摘要:
通知:如果本站对你学习算法有帮助,请收藏网址,并推荐给你的朋友。由于 labuladong 的算法套路太火,很多人直接拿我的 GitHub 文章去开付费专栏,价格还不便宜。我这免费写给你看,多宣传原创作者是你唯一能做的,谁也不希望劣币驱逐良币对吧? 这是好久之前的一篇文章「学习数据结构和算法的框架思 阅读全文
posted @ 2020-11-15 10:24
labuladong
阅读(1412)
评论(0)
推荐(0)
摘要:
二分搜索怎么用?我和快手面试官进行了深度探讨 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: 410.分割数组的最大值 经常有读者问我,读了之前的爆文 二分查找框架详解 之后,二分查找的算法他写的很溜了,但仅仅局限于在数组中搜索元素,不知道底怎么在算法题里面运用二分 阅读全文
posted @ 2020-11-15 10:22
labuladong
阅读(415)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 704.二分查找 34.在排序数组中查找元素的第一个和最后一个位置 先给大家讲个笑话乐呵一下: 有一天阿东到图书馆借了 N 本书,出图书馆的时候,警报响了,于是保安把阿东拦下,要检查一下哪本书没有登记出借。阿东正准备把每一本书在报警器下过一下,以找出引发警报的书 阅读全文
posted @ 2020-11-15 10:19
labuladong
阅读(1310)
评论(0)
推荐(2)
摘要:
读完本文,你可以去力扣拿下如下题目: 384.打乱数组 我知道大家会各种花式排序算法,但是如果叫你打乱一个数组,你是否能做到胸有成竹?即便你拍脑袋想出一个算法,怎么证明你的算法就是正确的呢?乱序算法不像排序算法,结果唯一可以很容易检验,因为「乱」可以有很多种,你怎么能证明你的算法是「真的乱」呢? 所 阅读全文
posted @ 2020-11-15 10:17
labuladong
阅读(220)
评论(0)
推荐(0)
摘要:
通知:如果本站对你学习算法有帮助,请收藏网址,并推荐给你的朋友。由于 labuladong 的算法套路太火,很多人直接拿我的 GitHub 文章去开付费专栏,价格还不便宜。我这免费写给你看,多宣传原创作者是你唯一能做的,谁也不希望劣币驱逐良币对吧? 咱们的公众号有很多硬核的算法文章,今天就聊点轻松的 阅读全文
posted @ 2020-11-15 10:15
labuladong
阅读(238)
评论(0)
推荐(0)
摘要:
之前发的那篇关于框架性思维的文章,我也发到了不少其他圈子,受到了大家的普遍好评,这一点我真的没想到,首先感谢大家的认可,我会更加努力,写出通俗易懂的算法文章。 有很多朋友问我数据结构和算法到底该怎么学,尤其是很多朋友说自己是「小白」,感觉这些东西好难啊,就算看了之前的「框架思维」,也感觉自己刷题乏力 阅读全文
posted @ 2020-11-15 10:13
labuladong
阅读(395)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 141.环形链表 141.环形链表II 167.两数之和 II - 输入有序数组 我把双指针技巧再分为两类,一类是「快慢指针」,一类是「左右指针」。前者解决主要解决链表中的问题,比如典型的判定链表中是否包含环;后者主要解决数组(或者字符串)中的问题,比如二分查找 阅读全文
posted @ 2020-11-15 10:12
labuladong
阅读(551)
评论(0)
推荐(1)
摘要:
读完本文,你可以去力扣拿下如下题目: 295.数据流的中位数 如果输入一个数组,让你求中位数,这个好办,排个序,如果数组长度是奇数,最中间的一个元素就是中位数,如果数组长度是偶数,最中间两个元素的平均数作为中位数。 如果数据规模非常巨大,排序不太现实,那么也可以使用概率算法,随机抽取一部分数据,排序 阅读全文
posted @ 2020-11-15 10:11
labuladong
阅读(1866)
评论(1)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 969.煎饼排序 烧饼排序是个很有意思的实际问题:假设盘子上有 n 块面积大小不一的烧饼,你如何用一把锅铲进行若干次翻转,让这些烧饼的大小有序(小的在上,大的在下)? 设想一下用锅铲翻转一堆烧饼的情景,其实是有一点限制的,我们每次只能将最上面的若干块饼子翻转: 阅读全文
posted @ 2020-11-15 10:09
labuladong
阅读(216)
评论(0)
推荐(0)
摘要:
一文秒杀三道区间集合题目 读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目: 1288.删除被覆盖区间 56.区间合并 986.区间列表的交集 经常有读者问区间相关的问题,今天写一篇文章,秒杀三道区间相关的问题。 所谓区间问题,就是线段问题,让你合并所有线段、找出线段的 阅读全文
posted @ 2020-11-15 10:07
labuladong
阅读(1971)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 986.区间列表的交集 本文是区间系列问题的第三篇,前两篇分别讲了区间的最大不相交子集和重叠区间的合并,今天再写一个算法,可以快速找出两组区间的交集。 先看下题目,LeetCode 第 986 题就是这个问题: 题目很好理解,就是让你找交集,注意区间都是闭区间。 阅读全文
posted @ 2020-11-15 10:05
labuladong
阅读(675)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 56.合并区间 上篇文章用贪心算法解决了区间调度问题:给你很多区间,让你求其中的最大不重叠子集。 其实对于区间相关的问题,还有很多其他类型,本文就来讲讲区间合并问题(Merge Interval)。 LeetCode 第 56 题就是一道相关问题,题目很好理解: 阅读全文
posted @ 2020-11-15 09:55
labuladong
阅读(610)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 733.扁平化嵌套列表 今天来讲一道非常有启发性的设计题目,为什么说它有启发性,我们后面再说。 一、题目描述 这是 LeetCode 第 341.扁平化嵌套列表迭代器,我来描述一下题目: 首先,现在有一种数据结构 NestedInteger,这个结构中存的数据可 阅读全文
posted @ 2020-11-15 09:54
labuladong
阅读(363)
评论(0)
推荐(0)
摘要:
上篇文章 洗牌算法详解 讲到了验证概率算法的蒙特卡罗方法,今天聊点轻松的内容:几个和概率相关的有趣问题。 计算概率有下面两个最简单的原则: 原则一、计算概率一定要有一个参照系,称作「样本空间」,即随机事件可能出现的所有结果。事件 A 发生的概率 = A 包含的样本点 / 样本空间的样本总数。 原则二 阅读全文
posted @ 2020-11-15 09:51
labuladong
阅读(695)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 46.全排列 51.N皇后 这篇文章是很久之前的一篇《回溯算法详解》的进阶版,之前那篇不够清楚,就不必看了,看这篇就行。把框架给你讲清楚,你会发现回溯算法问题都是一个套路。 废话不多说,直接上回溯算法框架。解决一个回溯问题,实际上就是一个决策树的遍历过程。你只需 阅读全文
posted @ 2020-11-15 09:49
labuladong
阅读(431)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 76.最小覆盖子串 567.字符串的排列 438.找到字符串中所有字母异位词 3.无重复字符的最长子串 鉴于前文 二分搜索框架详解 的那首《二分搜索升天词》很受好评,并在民间广为流传,成为安睡助眠的一剂良方,今天在滑动窗口算法框架中,我再次编写一首小诗来歌颂滑动 阅读全文
posted @ 2020-11-15 09:47
labuladong
阅读(845)
评论(0)
推荐(0)
摘要:
经常刷 LeetCode 的读者肯定知道鼎鼎有名的 twoSum 问题,我们上篇文章 twoSum 问题的核心思想 就对 twoSum 的几个变种做了解析。 但是除了 twoSum 问题,LeetCode 上面还有 3Sum,4Sum 问题,我估计以后出个 5Sum,6Sum 也不是不可能。 那么, 阅读全文
posted @ 2020-11-15 09:45
labuladong
阅读(1138)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 22.括号生成 括号问题可以简单分成两类,一类是前文写过的 括号的合法性判断 ,一类是合法括号的生成。对于括号合法性的判断,主要是借助「栈」这种数据结构,而对于括号的生成,一般都要利用回溯递归的思想。 关于回溯算法,我们前文写过一篇 回溯算法套路框架详解 反响非 阅读全文
posted @ 2020-11-15 09:44
labuladong
阅读(918)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 111.二叉树的最小深度 752.打开转盘锁 后台有很多人问起 BFS 和 DFS 的框架,今天就来说说吧。 首先,你要说 labuladong 没写过 BFS 框架,这话没错,今天写个框架你背住就完事儿了。但要是说没写过 DFS 框架,那你还真是说错了,其实 阅读全文
posted @ 2020-11-15 09:42
labuladong
阅读(1344)
评论(0)
推荐(1)
摘要:
读完本文,你可以去力扣拿下如下题目: 37.解数独 经常拿回溯算法来说事儿的,无非就是八皇后问题和数独问题了。那我们今天就通过实际且有趣的例子来讲一下如何用回溯算法来解决数独问题。 一、直观感受 说实话我小的时候也尝试过玩数独游戏,但从来都没有完成过一次。做数独是有技巧的,我记得一些比较专业的数独游 阅读全文
posted @ 2020-11-15 09:41
labuladong
阅读(1358)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 1109.航班预订统计 前文 前缀和技巧详解 写过的前缀和技巧是非常常用的算法技巧,前缀和主要适用的场景是原始数组不会被修改的情况下,频繁查询某个区间的累加和。 没看过前文没关系,这里简单介绍一下前缀和,核心代码就是下面这段: class PrefixSum { 阅读全文
posted @ 2020-11-15 09:40
labuladong
阅读(1833)
评论(0)
推荐(2)
摘要:
读完本文,你可以去力扣拿下如下题目: 733.图像渲染 啥是 FloodFill 算法呢,最直接的一个应用就是「颜色填充」,就是 Windows 绘画本中那个小油漆桶的标志,可以把一块被圈起来的区域全部染色。 这种算法思想还在许多其他地方有应用。比如说扫雷游戏,有时候你点一个方格,会一下子展开一片区 阅读全文
posted @ 2020-11-15 09:37
labuladong
阅读(417)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 773.滑动谜题 滑动拼图游戏大家应该都玩过,下图是一个 4x4 的滑动拼图: 拼图中有一个格子是空的,可以利用这个空着的格子移动其他数字。你需要通过移动这些数字,得到某个特定排列顺序,这样就算赢了。 我小时候还玩过一款叫做「华容道」的益智游戏,也和滑动拼图比较 阅读全文
posted @ 2020-11-15 09:36
labuladong
阅读(701)
评论(0)
推荐(0)
摘要:
读完本文,你可以去力扣拿下如下题目: 1.两数之和 170.两数之和 III - 数据结构设计 Two Sum 系列问题在 LeetCode 上有好几道,这篇文章就挑出有代表性的几道,介绍一下这种问题怎么解决。 TwoSum I 这个问题的最基本形式是这样:给你一个数组和一个整数 target,可以 阅读全文
posted @ 2020-11-15 09:34
labuladong
阅读(376)
评论(0)
推荐(0)

浙公网安备 33010602011771号