数据结构与算法
文章平均质量分 82
编程中的艺术
白龙码~
code成就梦想
展开
-
单调栈应用——矩形最大面积问题
每个柱子彼此相邻,且宽度为 1。因此,当我们确定某一根柱子为矩形的高时,只需要知道左边第一个矮于它的柱子下标。求在该柱状图中,能够勾勒出来的矩形的最大面积。如此,本题又被抽象成了。的二维二进制矩阵,找出只包含。,右边第一个矮于它的柱子下标。的最大矩形,并返回其面积。,那么此时矩形的面积就等于。如果第i根柱子的高度。原创 2022-09-25 16:00:00 · 790 阅读 · 0 评论 -
搜索旋转排序数组[特殊二分]
简单来说,旋转就是将一个原本升序的数组,从某一个点pivot断开,将后半部分整体移至前面:原创 2022-09-23 13:22:23 · 351 阅读 · 0 评论 -
BFS实际应用题[思维扩展]——双向BFS与A*启发式搜索
BFS,即广度优先搜索(Breadth-First-Search),是一种计算无权最短路径的常见算法。本文基于常见题型介绍BFS的变种与应用原创 2022-09-21 16:11:11 · 442 阅读 · 0 评论 -
集合划分问题:思路与剪枝[回溯]
当我们尝试将第idx个球放入第i个集合时,说明将它放入前i-1个集合都已经失败了。那么此时如果第i个集合的元素和与第i-1个集合的元素和相等,则说明第idx个球再放入第i个集合,依然会失败。对于第idx个元素,我们可以选择将其放入K个子集中的任意一个。由于划分成K个不同的非空子集,因此我们不妨使用一个数组记录K个子集的元素和分别是多少。如果第idx个元素已放入,则递归到下一层,选择将第idx+1个元素放入某一个子集。此时需要将第idx个元素从先前选择的集合中取出,同时在选择列表中重新选择一个集合。原创 2022-09-20 15:06:21 · 619 阅读 · 0 评论 -
字典树原理与实现
字典树(*trie*),又称前缀树,或单词查找树,是一棵专用于查找单词或单词前缀是否存在的树。原创 2022-09-19 15:56:16 · 365 阅读 · 0 评论 -
扫描线及其应用
当我们扫描到一个矩形的左边缘时,我们将其y方向上的线段加入线段树,当扫描到一个矩形的右边缘时,我们将其y方向上的线段从线段树中删除。每当扫描到一个矩形的边缘时,前后两条扫描线就可能与原来的不规则图形构成一个规则的矩形。如此一来,不管是不规则图形的面积还是周长,都可以通过这些规则的矩形算出。我们再看一眼上图,扫描线构成规则矩形时,都是在扫描到原矩形的某一条边缘时。最暴力的方式就是将所有矩形的面积加起来,再减去相邻矩形重合的面积。那么当扫描线扫描到边缘时,前后两条扫描线构成的规则矩形的。,可是高如何确定呢?原创 2022-09-18 16:38:02 · 483 阅读 · 0 评论 -
RMQ类问题利器:线段树
(区间的最值)、区间的和,如果使用朴素算法,即通过遍历的方式求取,则时间复杂度为O(N),在常数次查询的情况下可以接受,但是当区间长度为N,查询次数为M时,查询复杂度就变成。注意:由于lazy变量的存在,使用子节点的值更新父节点时,需要加上父节点的lazy值,因为该值是由于"偷懒"而没有添加在子节点上的。,此时将这个节点的值进行修改,并按要求修改lazy,比如:对给定区间整体加4,则lazy加4,整体减3,则lazy减3。,则左孩子存储[start, mid]的和,右孩子存储[mid+1, end]的和。原创 2022-09-14 20:56:18 · 267 阅读 · 0 评论 -
区间贪心问题合集
看起来简单的贪心思想往往不是那么好想。原创 2022-09-12 16:00:55 · 246 阅读 · 0 评论 -
字符串匹配DP问题合集
四道题解,注释详解每种状态转移的意义原创 2022-09-11 20:26:24 · 251 阅读 · 0 评论 -
水塘抽样算法与等概率证明
对于数据流中的数据,我们将其存储到容器中,并使用随机数取出[0, n)的任意一个元素,完成等概率抽样。该算法的时间与空间复杂度均为O(n)。水塘抽样算法用于:在数据流中以。对于数据流中的第i个数,它有。原创 2022-09-08 08:30:00 · 295 阅读 · 0 评论 -
字符贡献度问题
中抽取,但是必须保证[1, 1]中抽取的字符串必须以1结尾,因为它要与i=2处的A相连。同样的,[3, 4]中抽取的字符串必须以3开头,因为它要与i=2处的A相连。因此,对于字符串中的每一个字符,我们求出它能为多少个子串贡献只出现一次的次数,就相当于变相地求解了整个复杂的问题了!内的所有子串,字符c都能贡献一个只出现一次的次数,对否?,求出其中只出现一次的字符的个数如何求取?的所有子串,其中每个子串中只出现一次的字符个数之和如何求取?,然后对于每个子串,都使用哈希表计算只出现一次的字符个数。原创 2022-09-06 10:12:41 · 334 阅读 · 0 评论 -
下一个排列问题next_permutation
一、问题引入 全排列问题很常见,比如一个序列:1 2 3,它的全排列有6种: 1 2 3 、1 3 2、2 1 3、2 3 1、3 1 2、3 2 1 但是如何根据一个排列求下一个排列?所谓下一个排列原创 2022-09-01 08:10:48 · 133 阅读 · 0 评论 -
单调队列与应用
窗口右移时,判断左边出去的元素是否是队头元素,如果是,则将队头pop,最后将右边新增的元素入队列即可。原创 2022-08-29 10:10:21 · 414 阅读 · 0 评论 -
差分数组(定义+性质+证明+代码实现+巩固练习)
差分数组本质就是一个与原数组大小相同的数组,记原数组为arr,差分数组为di等于0时,;i大于0时,,即原数组对应下标的元素与前一个元素的差。原创 2022-08-24 08:00:00 · 380 阅读 · 0 评论 -
【那些神题和它的改编】消失的数字I、II、III、IV
找出这些特征各异的数组中只出现一次的数是哪个或哪些?!原创 2021-08-19 15:03:44 · 1154 阅读 · 17 评论 -
对顶堆与应用
了解什么是对顶堆以及对顶堆的平衡方式,掌握获取数据流中位数的O(1)算法。原创 2022-08-17 10:51:17 · 267 阅读 · 0 评论