- 博客(108)
- 收藏
- 关注
原创 算法 | 每日一题 | 两个线段获得的最多奖品 | 滑动窗口
否则就先跑右边的那条线段,以mid为左端点,以right - 1为右端点,将长度调整到为k时就可以找奖品最多的那一段了。左边的线段以mid为右端点,移动左端点left,长度为k时开始找奖品最多的一段。比方说 k = 2 ,你可以选择线段 [1, 3] 和 [2, 4] ,你可以获得满足 1
2024-09-11 11:09:52
536
1
原创 算法通关村第十五关 | 黄金 | 超大规模数据场景
有一个 20GB 的文件,每行一个字符串,对其进行排序。这里可以使用分块方式来排序,先将每块进行排序,然后要逐步进行合并,也叫做外部排序。
2023-12-11 21:43:16
252
原创 算法通关村第十五关 | 白银 | 海量数据场景下的热门算法题
可以采用位图存储数据,申请一个 bit 类型的数组 bitArr ,每个位置只表示 0 或者 1 状态,可以将占用内存缩小为使用哈希表的 1/32。遍历给定的 40 亿个数,遇到数时就将 bitArr 相应位置设置为 1。遍历结束后,再遍历 bitArr ,哪个位置上的值是 0 ,那这个数就不在 40 亿个数中。假如现在只有 10 MB 内存空间可用,就可以考虑使用分块的方法。通过时间换取空间。
2023-12-11 21:41:11
266
原创 算法通关村第十五关 | 青铜 | 用4KB内存寻找重复元素
1.使用位存储:占用的空间是存整数的 1/8。2.分块:也叫外部排序,将大文件划分为若干小块,先处理小块再逐步得到想要的结果,需要至少遍历两次全部序列,是用时间换空间的方法。3.堆:极其适合超大数据或者流数据中找第 K 大,第 K 小, K 个最大, K 个最小等等问题。
2023-12-11 20:31:37
158
原创 算法通关村第十八关 | 青铜 | 回溯
回溯可以视为递归的拓展,有着明确的解题模板。很大的不同之处是有一个撤销处理结果的操作,但是大框架就是遍历 N 叉树。回溯主要解决暴力枚举都解决不了的问题。回溯完整代码示例:返回 1 到 n 中所有可能的 k 个数的组合。
2023-12-11 15:14:34
326
原创 算法通关村第十七关|青铜|贪心:无招胜有招
贪心常见的经典应用场景:● 排序问题:选择排序,拓扑排序● 优先队列:堆排序● 赫夫曼压缩编码● 图:Prim Fruskal Dijkstra 算法● 硬币找零问题● 分数背包问题● 并查集:按大小或者高度合并问题或者排名● 任务调度部分场景● 一些复杂问题的近似算法。
2023-12-07 19:35:12
385
原创 算法通关村第十四关|黄金挑战|数据流的中位数
之前写过找中间用两个堆,这道题就可以使用一个大顶堆和一个小顶堆。设计一种数据结构可以支持添加整数和返回中位数的操作。大顶堆存储比较小的元素,小顶堆存储比较大的元素。如有错误或者不足之处,敬请指正!
2023-12-06 16:40:13
258
原创 算法通关村第十四关|白银|堆的高效
原题:力扣215.之间用快速排序做过这道题,这次使用堆查找。找最大用小堆,找最小用大堆,找中间用两个堆。这道题用小堆,新元素插入的时候就替换根元素,然后重新构造小堆,构造完成后的根元素就是第 K 大的元素,不论要处理的元素有多少以及是否固定,小堆的长度都固定为 K ,且根元素就是第 K 大的元素。只有比根元素大的才让进入堆。这里使用 PriorityQueue 优先队列。
2023-12-06 09:49:55
232
原创 算法通关村第十四关|青铜|堆结构
堆是将一组数据按照完全二叉树的存储顺序,将数据存储在一个一维数组中的结构。大顶堆:任意节点的值均大于等于它的左右孩子,并且最大的值位于堆顶,即根节点处。小顶堆:任意节点的值均小于等于它的左右孩子,并且最小的值位于堆顶,即根结点处。
2023-12-05 18:58:48
203
原创 算法 | 每日一题 | 可获得的最大点数 | 滑动窗口
这两天正好在做一些滑动窗口的题目,这道题使用滑动窗口解题会非常简单,因为取走的数是两边的数,所以把中间的数看作一个长度为 n - k 的滑动窗口即可。几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。给你一个整数数组 cardPoints 和整数 k,请你返回可以获得的最大点数。每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。你的点数就是你拿到手中的所有卡牌的点数之和。
2023-12-03 22:20:41
225
原创 设计模式 【Adapter 模式】
用来填补现有的程序和所需的程序之间差异的设计模式就是 Adapter 模式。Adapter 模式有两种:● 类适配器模式,即使用继承的适配器● 对象适配器模式,即使用委托的适配器。
2023-11-29 20:16:07
1047
原创 算法通关村第十三关|黄金挑战|数论问题
假如 8 和 12 的最大公因数是 4 ,就记作 gcd(8,12)=4.辗转相除法重要规则:若 r 是 a÷b 的余数,则 gcd(a,b)=gcd(b,r)。
2023-11-29 19:31:55
256
原创 算法通关村第十三关|白银|数字与数学高频问题
除本方法外,还可以用整形范围内最大的3的幂来除以输入的n,仅需要一次除法,如果余数为0即为3的幂。如有错误或者不足之处,敬请指正!
2023-11-28 19:01:16
506
原创 算法通关村第十二关|黄金挑战|最长公共前缀&字符串压缩
原题:力扣14.1.从前到后比较每个字符串的同一个位置。2.将完整的字符串进行比较得到公共前缀。然后遍历每个字符串,不断缩小这个公共前缀,遍历结束后得到的就是最长的公共前缀。
2023-11-27 16:01:50
396
原创 算法通关村第十二关|青铜|字符串转换整数
原题:力扣709.字符串大写转小写有现成的API使用,但是我们也可以自己来实现。使用或运算进行加操作能提高效率,因为 32 对应的二进制表示为 00100000 ,而大写字母的范围 [65, 90] 的二进制表示在 00100000 的为 1 的位置均为 0 ,所以直接或操作就可以实现和加 32 一样的效果。
2023-11-22 15:22:00
514
原创 算法通关村第十一关|白银|位运算高频算法题【持续更新】
原题:力扣191.挨个判断是不是 1 的话需要对整个长度进行遍历,但是采用技巧可以只寻找为 1 的位,然后将其数量记录下来。
2023-11-15 20:38:30
349
原创 算法通关村第十关|黄金挑战|归并排序
归并排序:先将大的序列分为若干个小的序列,得到答案后再将答案合并,递归深度为 log n。如有错误或者不足之处,敬请指正!
2023-11-15 18:48:16
162
原创 算法通关村第十关|白银|数组中第K大的数字
这里使用快速排序来解决问题,同时因为哨兵位的索引是已知的,所以可以通过索引知道第K大的数字在左侧还是右侧,可以避免另一部分的排序。如有错误或者不足之处,敬请指正!
2023-11-15 18:28:24
306
原创 算法通关村第九关|黄金挑战|有序数组转为二叉搜索树&寻找两个正序数组的中位数
原题:力扣108.高度平衡二叉树:每个节点的左右两个子树的高度差的绝对值不超过1。本题要求高度平衡,所以选择中间元素作为根节点。因为是升序数组,所以可以直接构造出搜索树。
2023-11-14 18:05:55
523
原创 算法通关村第九关|白银|二分查找与搜索树高频问题【持续更新】
原题:力扣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
402
原创 算法通关村第九关|青铜|二分查找
凡是涉及到在排好序的地方(不一定是整体,排好序的部分也可以)查找的都可以考虑用二分来优化查找效率,如果知道大体位置了,也可以不折半而是找更高效的计算方法。。
2023-11-09 16:13:52
203
原创 算法通关村第八关|黄金挑战|二叉树的最近公共祖先
找p和q就行,找不到p和q的节点就返回null,找到的就层层返回p或q,其他的还是返回null。直到某一层的left和right都不为null说明得到了最近公共节点,再将这个节点层层返回。如果p和q存在祖先和子节点的关系,就层层返回祖先。如有错误或者不足之处,敬请指正!
2023-11-08 18:18:52
321
原创 算法|每日一题|最长平衡子字符串|计数
如果子字符串中 所有的 0 都在 1 之前 且其中 0 的数量等于 1 的数量,则认为 s 的这个子字符串是平衡子字符串。请注意,空子字符串也视作平衡子字符串。给你一个仅由 0 和 1 组成的二进制字符串 s。返回 s 中最长的平衡子字符串长度。子字符串是字符串中的一个连续字符序列。如有错误或者不足之处,敬请指正!
2023-11-08 11:11:39
452
原创 算法通关村第七关|黄金挑战|迭代实现二叉树的前、中、后序遍历
将后序遍历的结果反过来就是类似于前序遍历的结果,只不过前序遍历先找左孩子,后序反过来是先找右孩子。如有错误或者不足之处,敬请指正!
2023-11-07 14:14:14
520
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅