算法
文章平均质量分 82
乌兰布
这个作者很懒,什么都没留下…
展开
-
优先队列基础知识
Type是要存放的数据类型Container是实现底层堆的容器,必须是数组实现的容器,如vector、dequeFunctional是比较方式/比较函数/优先级此时默认的容器是vector,默认的比较方式是大顶堆less//小顶堆//大顶堆//默认大顶堆//paira.push(d);a.push(c);a.push(b);while (!//输出结果为:2 51 31 2。原创 2023-05-13 10:47:59 · 144 阅读 · 0 评论 -
算法速成记录贴Day0
找到链表的中点,以中点为分界,将链表拆分成两个子链表。寻找链表的中点可以使用快慢指针的做法,快指针每次移动 2 步,慢指针每次移动 1 步,当快指针到达链表末尾时,慢指针指向的链表节点即为链表的中点。将两个排序后的子链表合并,得到完整的排序后的链表。可以使用「21. 合并两个有序链表」的做法,将两个有序的子链表进行合并。思路:每走一次,fast指针比slow快1,若有环,两指针一定相遇。思路1:复制链表值到数组列表中,利用双指针判回文。思路2:设定一个哨兵节点,不断调整其指针pre。对两个子链表分别排序。原创 2023-05-06 21:58:23 · 156 阅读 · 1 评论 -
算法速成记录帖Day1
尾部的哨兵如发现有比基准数小的数,停下。头部的哨兵如发现有比基准数大的数,停下。直到两个哨兵相遇,交换基准数和尾哨兵。思路:寻找数组中「第一个等于 target的位置」和「第一个大于 target的位置减一」思路2:从右上角开始遍历,向左数字会变小,向下数字会变大。思路1:类似合并有序链表,利用双指针。思路2:逆向双指针,无需开辟新数组。思路:维护一个新的string变量。思路:设置中点,与high比较。思路1:对每一行进行二分查找。思路:判断数组的有序部分。二叉树与树组的对应。详细解释参考如下链接。原创 2023-05-07 18:40:34 · 189 阅读 · 0 评论 -
算法速成记录贴Day2
从左往右遍历各位数字,找到第一个开始下降的数字[i],将[i]减1,然后将[i+1 ...]各位数字全部置为9即可例如:1232123,从左往右遍历,找到第一个开始下降的数字3,将3改为2,然后将后面所有数字全部置为9,最后为:1229999 即为答案。思路:如果某一个作为 起跳点 的格子可以跳跃的距离是 3,那么表示后面 3 个格子都可以作为 起跳点。其中 dp[i][j] 表示从数组的 [0,i] 下标范围内选取若干个正整数(可以是 0 个),是否存在一种选取方案使得被选取的正整数的和等于 j。原创 2023-05-08 19:27:24 · 852 阅读 · 0 评论 -
算法速成记录贴Day3
如果一个节点值大于根节点,一个节点值小于根节点,说明他们一个在根节点的左子树上一个在根节点的右子树上,那么根节点就是他们的最近公共祖先节点。求 “二叉搜索树第 k 大的节点” 可转化为求 “此树的中序遍历倒序的第 k 个节点”。二叉搜索树中序遍历一定是递增的,因此只需判断当前节点值比上一个节点值大。如果两个节点值都小于根节点,说明他们在根节点的左子树上,我们往左子树上找。如果两个节点值都大于根节点,说明他们在根节点的右子树上,我们往右子树上找。LeetCode516: 最长回文子序列。利用最长公共子序列。原创 2023-05-09 21:40:17 · 64 阅读 · 0 评论