不易|算法通关村
文章平均质量分 55
按照算法通关村中的关卡顺序和等级划分发布。
星不易
这个作者很懒,什么都没留下…
展开
-
算法通关村第十八关 | 黄金 | 较难的回溯问题
原题:力扣93.原创 2023-12-12 19:27:22 · 624 阅读 · 0 评论 -
算法通关村第十九关 | 青铜 | 动态规划
原题:力扣62.每次移动都是将问题规模缩小。原创 2023-12-12 13:29:42 · 391 阅读 · 0 评论 -
算法通关村第十五关 | 黄金 | 超大规模数据场景
有一个 20GB 的文件,每行一个字符串,对其进行排序。这里可以使用分块方式来排序,先将每块进行排序,然后要逐步进行合并,也叫做外部排序。原创 2023-12-11 21:43:16 · 200 阅读 · 0 评论 -
算法通关村第十五关 | 白银 | 海量数据场景下的热门算法题
可以采用位图存储数据,申请一个 bit 类型的数组 bitArr ,每个位置只表示 0 或者 1 状态,可以将占用内存缩小为使用哈希表的 1/32。遍历给定的 40 亿个数,遇到数时就将 bitArr 相应位置设置为 1。遍历结束后,再遍历 bitArr ,哪个位置上的值是 0 ,那这个数就不在 40 亿个数中。假如现在只有 10 MB 内存空间可用,就可以考虑使用分块的方法。通过时间换取空间。原创 2023-12-11 21:41:11 · 205 阅读 · 0 评论 -
算法通关村第十五关 | 青铜 | 用4KB内存寻找重复元素
1.使用位存储:占用的空间是存整数的 1/8。2.分块:也叫外部排序,将大文件划分为若干小块,先处理小块再逐步得到想要的结果,需要至少遍历两次全部序列,是用时间换空间的方法。3.堆:极其适合超大数据或者流数据中找第 K 大,第 K 小, K 个最大, K 个最小等等问题。原创 2023-12-11 20:31:37 · 108 阅读 · 0 评论 -
算法通关村第十八关 | 白银 | 回溯热门问题
原题:力扣39.元素可以重复拿取,且题目的测试用例保证了组合数少于 150 个。原创 2023-12-11 20:08:22 · 194 阅读 · 0 评论 -
算法通关村第十八关 | 青铜 | 回溯
回溯可以视为递归的拓展,有着明确的解题模板。很大的不同之处是有一个撤销处理结果的操作,但是大框架就是遍历 N 叉树。回溯主要解决暴力枚举都解决不了的问题。回溯完整代码示例:返回 1 到 n 中所有可能的 k 个数的组合。原创 2023-12-11 15:14:34 · 272 阅读 · 0 评论 -
算法通关村第十七关 | 黄金挑战 | 跳跃游戏
原题:力扣55.逐步判断下一步的覆盖范围,根据范围去推断是否能到达终点,不用计较每一步走到哪里。原创 2023-12-11 12:09:46 · 290 阅读 · 0 评论 -
算法通关村第十七关 | 白银 | 贪心高频问题
原题:力扣252.原创 2023-12-11 10:57:43 · 285 阅读 · 0 评论 -
算法通关村第十六关|黄金挑战|滑动窗口与堆结合
如有错误或者不足之处,敬请指正!原创 2023-12-07 19:38:17 · 262 阅读 · 0 评论 -
算法通关村第十七关|青铜|贪心:无招胜有招
贪心常见的经典应用场景:● 排序问题:选择排序,拓扑排序● 优先队列:堆排序● 赫夫曼压缩编码● 图:Prim Fruskal Dijkstra 算法● 硬币找零问题● 分数背包问题● 并查集:按大小或者高度合并问题或者排名● 任务调度部分场景● 一些复杂问题的近似算法。原创 2023-12-07 19:35:12 · 306 阅读 · 0 评论 -
算法通关村第十四关|黄金挑战|数据流的中位数
之前写过找中间用两个堆,这道题就可以使用一个大顶堆和一个小顶堆。设计一种数据结构可以支持添加整数和返回中位数的操作。大顶堆存储比较小的元素,小顶堆存储比较大的元素。如有错误或者不足之处,敬请指正!原创 2023-12-06 16:40:13 · 221 阅读 · 0 评论 -
算法通关村第十四关|白银|堆的高效
原题:力扣215.之间用快速排序做过这道题,这次使用堆查找。找最大用小堆,找最小用大堆,找中间用两个堆。这道题用小堆,新元素插入的时候就替换根元素,然后重新构造小堆,构造完成后的根元素就是第 K 大的元素,不论要处理的元素有多少以及是否固定,小堆的长度都固定为 K ,且根元素就是第 K 大的元素。只有比根元素大的才让进入堆。这里使用 PriorityQueue 优先队列。原创 2023-12-06 09:49:55 · 189 阅读 · 0 评论 -
算法通关村第十四关|青铜|堆结构
堆是将一组数据按照完全二叉树的存储顺序,将数据存储在一个一维数组中的结构。大顶堆:任意节点的值均大于等于它的左右孩子,并且最大的值位于堆顶,即根节点处。小顶堆:任意节点的值均小于等于它的左右孩子,并且最小的值位于堆顶,即根结点处。原创 2023-12-05 18:58:48 · 163 阅读 · 0 评论 -
算法通关村第十六关|白银|滑动窗口经典
原题:力扣3.使用 HashMap ,将字符和最后一次出现的索引存储起来。原创 2023-12-04 19:03:15 · 416 阅读 · 0 评论 -
算法通关村第十六关|青铜|滑动窗口入门题
原题:力扣643.这个滑动窗口很典。原创 2023-12-01 20:25:25 · 231 阅读 · 0 评论 -
算法通关村第十三关|黄金挑战|数论问题
假如 8 和 12 的最大公因数是 4 ,就记作 gcd(8,12)=4.辗转相除法重要规则:若 r 是 a÷b 的余数,则 gcd(a,b)=gcd(b,r)。原创 2023-11-29 19:31:55 · 207 阅读 · 0 评论 -
算法通关村第十三关|白银|数字与数学高频问题
除本方法外,还可以用整形范围内最大的3的幂来除以输入的n,仅需要一次除法,如果余数为0即为3的幂。如有错误或者不足之处,敬请指正!原创 2023-11-28 19:01:16 · 452 阅读 · 0 评论 -
算法通关村第十三关|青铜|数字与数学基础问题
原题:力扣1822.只需要看有多少个负数,就足以判断符号了。原创 2023-11-27 19:54:16 · 241 阅读 · 0 评论 -
算法通关村第十二关|黄金挑战|最长公共前缀&字符串压缩
原题:力扣14.1.从前到后比较每个字符串的同一个位置。2.将完整的字符串进行比较得到公共前缀。然后遍历每个字符串,不断缩小这个公共前缀,遍历结束后得到的就是最长的公共前缀。原创 2023-11-27 16:01:50 · 330 阅读 · 0 评论 -
算法通关村第十二关|白银|字符串经典基础面试题
字符串经典基础面试题原创 2023-11-23 17:00:41 · 355 阅读 · 0 评论 -
算法通关村第十二关|青铜|字符串转换整数
原题:力扣709.字符串大写转小写有现成的API使用,但是我们也可以自己来实现。使用或运算进行加操作能提高效率,因为 32 对应的二进制表示为 00100000 ,而大写字母的范围 [65, 90] 的二进制表示在 00100000 的为 1 的位置均为 0 ,所以直接或操作就可以实现和加 32 一样的效果。原创 2023-11-22 15:22:00 · 482 阅读 · 0 评论 -
算法通关村第十一关|白银|位运算高频算法题【持续更新】
原题:力扣191.挨个判断是不是 1 的话需要对整个长度进行遍历,但是采用技巧可以只寻找为 1 的位,然后将其数量记录下来。原创 2023-11-15 20:38:30 · 303 阅读 · 0 评论 -
算法通关村第十一关|青铜|位运算常用技巧
以下变量均为有符号整数。原创 2023-11-15 19:32:24 · 180 阅读 · 0 评论 -
算法通关村第十关|黄金挑战|归并排序
归并排序:先将大的序列分为若干个小的序列,得到答案后再将答案合并,递归深度为 log n。如有错误或者不足之处,敬请指正!原创 2023-11-15 18:48:16 · 127 阅读 · 0 评论 -
算法通关村第十关|白银|数组中第K大的数字
这里使用快速排序来解决问题,同时因为哨兵位的索引是已知的,所以可以通过索引知道第K大的数字在左侧还是右侧,可以避免另一部分的排序。如有错误或者不足之处,敬请指正!原创 2023-11-15 18:28:24 · 258 阅读 · 0 评论 -
算法通关村第十关|青铜|快速排序
快速排序的核心框架是“二叉树的前序遍历+对撞型双指针”。如有错误或者不足之处,敬请指正!原创 2023-11-15 17:44:14 · 708 阅读 · 0 评论 -
算法通关村第九关|黄金挑战|有序数组转为二叉搜索树&寻找两个正序数组的中位数
原题:力扣108.高度平衡二叉树:每个节点的左右两个子树的高度差的绝对值不超过1。本题要求高度平衡,所以选择中间元素作为根节点。因为是升序数组,所以可以直接构造出搜索树。原创 2023-11-14 18:05:55 · 475 阅读 · 0 评论 -
算法通关村第九关|白银|二分查找与搜索树高频问题【持续更新】
原题:力扣852.给定一个数组,索引 i 左边的数依次递增,右边的数依次递减, i 处的数最大,求 i 是多少。可以直接遍历,但是用二分法的速度更快,对于二分的某个位置 mid ,mid 可能有三种情况:1 mid 在上升阶段:arr[mid]>arr[mid - 1] && arr[mid]arr[mid-1] && arr[mid]>arr[mid+1]原创 2023-11-13 20:23:47 · 354 阅读 · 0 评论 -
算法通关村第九关|青铜|二分查找
凡是涉及到在排好序的地方(不一定是整体,排好序的部分也可以)查找的都可以考虑用二分来优化查找效率,如果知道大体位置了,也可以不折半而是找更高效的计算方法。。原创 2023-11-09 16:13:52 · 160 阅读 · 0 评论 -
算法通关村第八关|黄金挑战|二叉树的最近公共祖先
找p和q就行,找不到p和q的节点就返回null,找到的就层层返回p或q,其他的还是返回null。直到某一层的left和right都不为null说明得到了最近公共节点,再将这个节点层层返回。如果p和q存在祖先和子节点的关系,就层层返回祖先。如有错误或者不足之处,敬请指正!原创 2023-11-08 18:18:52 · 275 阅读 · 0 评论 -
算法通关村第八关|白银|二叉树的深度和高度问题【持续更新】
只需要一直递归,维护一个最大值。每一层只要有一个子节点,这个最大值就可以增加。原创 2023-11-08 17:24:16 · 360 阅读 · 0 评论 -
算法通关村第八关|青铜|二叉树的经典算法题
二叉树的经典算法题原创 2023-11-07 16:06:59 · 406 阅读 · 3 评论 -
算法通关村第七关|黄金挑战|迭代实现二叉树的前、中、后序遍历
将后序遍历的结果反过来就是类似于前序遍历的结果,只不过前序遍历先找左孩子,后序反过来是先找右孩子。如有错误或者不足之处,敬请指正!原创 2023-11-07 14:14:14 · 462 阅读 · 0 评论 -
算法通关村第六关|白银|二叉树的层次遍历【持续更新】
二叉树的层次遍历以及各种扩展延伸原创 2023-11-06 20:39:10 · 478 阅读 · 0 评论 -
算法通关村第六关|青铜|树&通过序列构造二叉树
通过序列构造二叉树原创 2023-11-03 22:03:21 · 942 阅读 · 0 评论 -
算法通关村第五关|黄金挑战|LRU
如有错误或者不足之处,敬请指正!原创 2023-11-03 17:18:03 · 461 阅读 · 0 评论 -
算法通关村第五关|白银|队栈和Hash的经典算法题【持续更新】
队栈和Hash的经典算法题原创 2023-11-02 18:46:21 · 317 阅读 · 0 评论 -
算法通关村第五关|青铜|基于链表实现队列
如有错误或者不足之处,敬请指正!原创 2023-11-02 17:21:17 · 329 阅读 · 0 评论 -
算法通关村第四关|黄金挑战|表达式问题
给定一个内容为表达式的字符串,计算结果。原创 2023-11-01 20:22:42 · 393 阅读 · 0 评论