数据结构与算法
记录一些数据结构与算法的心得
OctalZero
你很懒,所以不需要简介.......
展开
-
【算法总结】十大排序对比及实现(C++)
⽤两个游标 i 和 j,分别指向 A[p…r] 的第⼀个元素。⽐较这两个元素 A[i] 和 A[j],如果 A[i]原创 2022-08-09 13:11:39 · 374 阅读 · 0 评论 -
【LeetCode 周赛】第84场双周赛
LeetCode 84场双周赛原创 2022-08-07 16:40:59 · 195 阅读 · 0 评论 -
【ACWing 算法基础】DFS
N皇后解析。原创 2022-08-06 09:08:25 · 193 阅读 · 0 评论 -
【ACWing 算法基础】C++ STL 容器简介
【ACWing 算法基础】C++ STL 容器简介。原创 2022-08-05 12:01:44 · 119 阅读 · 0 评论 -
【ACWing 算法基础】字符串哈希
字符串的前缀哈希法易懂的解释详细的证明。原创 2022-08-05 10:53:52 · 188 阅读 · 0 评论 -
【ACWing 算法基础】模拟散列表
拉链法开放寻址法散列表原理。原创 2022-08-03 14:03:51 · 172 阅读 · 0 评论 -
【ACWing 算法基础】堆(堆排序、数组模拟堆)
如何手写堆?堆排序中如何将数组构造成堆中?如何理解模拟堆中的heap_swap,hp[N], ph[N]?原创 2022-08-03 01:30:12 · 321 阅读 · 0 评论 -
【ACWing 算法基础】并查集
合并时必须让x,y的祖宗相等,如果仅仅等于父亲或者本身的话,树的高度太高了,会超内存原理图:路径压缩。原创 2022-08-02 19:45:56 · 185 阅读 · 0 评论 -
【ACWing 算法基础】Trie(字典树)
如何理解单(双)链表,Trie树和堆中的idx?原创 2022-08-02 18:25:07 · 177 阅读 · 0 评论 -
【ACWing 算法基础】KMP
将暴力的O(N*N)降为了O(N)解题方法先写匹配的部分,再写next数组的部分,思路一样的next,for内部(i=1,j=0)1.匹配不成功则一直回退,直到j=0时没有办法2.回退之后,匹配成功,j++模式串向前推进3.判断j==m,看是否比较完next,for内部(i=2,j=0)将s换为p1.匹配不成功则一直回退,直到j=0时没有办法2.回退之后,匹配成功,j++模式串向前推进。.........原创 2022-08-02 16:59:25 · 387 阅读 · 0 评论 -
【ACWing 算法基础】单调队列
解析动画解题思路解决队首已经出窗口的问题;解决队尾与当前元素a[i]不满足单调性的问题;将当前元素下标加入队尾;如果满足条件则输出结果;原创 2022-08-01 16:25:49 · 210 阅读 · 0 评论 -
【ACWing 算法基础】单调栈
Q为什么要保持栈内元素大小的单调递增特性?由于栈内元素是递增的,所以比较次数一定是最少的,这就实现了优化。Q如何保持栈内元素大小的递增性?在依次出栈比较栈顶元素和当前数组元素大小的时候,如果栈顶元素小,那么找到目标值,将当前数组元素入栈,这样保持了栈内元素大小的递增性;如果栈顶元素大,那么栈顶指针左移,直到找到目标值,再将当前数组元素入栈,这样就保持了栈内元素大小的递增性。我们不必在意这个过程破坏了栈的结构,因为之前的数已经找到之前数组元素对应的目标值了。......原创 2022-08-01 14:23:03 · 231 阅读 · 0 评论 -
【ACWing 算法基础】栈和队列(用数组构造栈和队列)
栈和队列(用数组构造栈和队列)原创 2022-08-01 11:49:33 · 99 阅读 · 0 评论 -
【ACWing 算法基础】双链表(数组模拟双链表)
插入操作删除操作。原创 2022-08-01 11:13:27 · 370 阅读 · 0 评论 -
【ACWing 算法基础】单链表(数组模拟单链表)
为什么要用数组模拟单链表?->数组是静态空间,用指针的话每次都要new,会很慢.原创 2022-08-01 09:56:55 · 625 阅读 · 0 评论 -
【ACWing 算法基础】区间合并
精髓就是按左端点排序,然后在模拟可能的情况。原创 2022-08-01 01:50:21 · 506 阅读 · 1 评论 -
【ACWing 算法基础】离散化
为什么要离散化呢?因为存储的下标实在太大了,如果直接开这么大的数组,根本不现实,第二个原因,本文是数轴,要是采用下标的话,可能存在负值,所以也不能,所以有人可能会提出用哈希表,哈希表可以吗?离散化的本质,是映射,将间隔很大的点,映射到相邻的数组元素中。减少对空间的需求,也减少计算量。......原创 2022-07-30 16:14:01 · 330 阅读 · 0 评论 -
【ACWing 算法基础】位运算
你可以取个例子,10…0=x+(~x)+1.其实x+(~x)=11…1(32位全为1,再加上个1,才能变成10…共一行,包含n个整数,其中的第i个数表示数列中的第i个数的二进制表示中1的个数。给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数。第二行包含n个整数,表示整个数列。0≤数列中元素的值≤109。第一行包含整数n。...原创 2022-07-30 11:59:27 · 146 阅读 · 0 评论 -
【ACWing 算法基础】双指针
通过双指针,可以将暴力的O(n²)降低到O(n)原创 2022-07-30 10:18:38 · 190 阅读 · 0 评论 -
【ACWing 算法基础】差分
详细总结。原创 2022-07-29 12:04:35 · 111 阅读 · 0 评论 -
【ACWing 算法基础】前缀和
795.前缀和796.子矩阵的和输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数n,m,q。接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每行包含四个整数x1,y1,x2,y2,表示一组询问。输出格式共q行,每行输出一个询问的结果。数据范围1≤x1≤x2≤n,−1000≤矩阵内元素的值≤1000。...原创 2022-07-29 10:03:28 · 156 阅读 · 0 评论 -
【ACWing 算法基础】高精度除以低精度
二. 例题794. 高精度除法给定两个非负整数(不含前导 0) A,B,请你计算 A/B 的商和余数。输入格式共两行,第一行包含整数 A,第二行包含整数 B。输出格式共两行,第一行输出所求的商,第二行输出所求余数。数据范围1≤A的长度≤100000 ,1≤B≤10000,B 一定不为 0输入样例:72输出样例:31AC代码:...原创 2022-07-28 16:07:50 · 203 阅读 · 0 评论 -
【ACWing 算法基础】高精度乘低精度
给定两个非负整数(不含前导0)A和B,请你计算A×B的值。共两行,第一行包含整数A,第二行包含整数B。共一行,包含A×B的值。1≤A的长度≤100000,原创 2022-07-28 15:41:44 · 204 阅读 · 0 评论 -
【ACWing 算法基础】高精度减法
二. 例题792. 高精度减法给定两个正整数(不含前导 0),计算它们的差,计算结果可能为负数。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的差。数据范围1≤整数长度≤105输入样例:3211输出样例:21AC代码:......原创 2022-07-28 15:14:23 · 188 阅读 · 0 评论 -
【ACWing 算法基础】高精度加法
给定两个正整数(不含前导0),计算它们的和。共两行,每行包含一个整数。1≤整数长度≤100000。共一行,包含所求的和。原创 2022-07-28 14:33:24 · 164 阅读 · 0 评论 -
【ACWing 算法基础】逆序对的数量
逆序对的定义如下对于数列的第i个和第j个元素,如果满足ia[j],则其为一个逆序对;给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。数列中的元素的取值范围[1,109]。第二行包含n个整数,表示整个数列。第一行包含整数n,表示数列的长度。输出一个整数,表示逆序对的个数。......原创 2022-07-28 11:33:11 · 180 阅读 · 0 评论 -
【ACWing 算法基础】二分查找
二分查找的核心思想->分治既然是分治,遵循以下步骤分解成子问题;递归处理子问题;合并子问题;二分的本质->二段性红色区间的那个点(左边界)即是序列中最后一个满足某条件(红色条件)的元素绿色区间的那个点(右边界)即是序列中第一个不满足某条件(红色条件)的元素当然,绿色区间的点也可以认为是第一个满足某条件(绿色条件)的元素详细分析。......原创 2022-07-28 10:16:05 · 202 阅读 · 0 评论 -
【ACWing 算法基础】归并排序
归并排序的核心思想->分治既然是分治,遵循以下步骤分解成子问题;递归处理子问题;合并子问题;方法边界注意事项分治算法最怕的就是n分成0和n,或n分成n和0,这会造成无限划分各种问题的详细分析。...原创 2022-07-28 07:54:45 · 231 阅读 · 0 评论 -
【ACWing 算法基础】第 k 个数
给定一个长度为n的整数数列,以及一个整数k,请用快速选择算法求出数列从小到大排序后的第k个数。第二行包含n个整数(所有整数均在1∼109范围内),表示整数数列。输出一个整数,表示数列的第k小数。第一行包含两个整数n和k。............原创 2022-07-28 00:26:18 · 214 阅读 · 0 评论 -
【ACWing 算法基础】快速排序
快速排序的核心思想->分治既然是分治,遵循以下步骤分解成子问题;递归处理子问题;合并子问题;原创 2022-07-27 18:15:38 · 380 阅读 · 0 评论 -
【算法技巧】算法竞赛中的小技巧
【算法技巧】算法竞赛中的小技巧。原创 2022-07-27 17:31:33 · 388 阅读 · 0 评论