
算法
文章平均质量分 69
自学过程中的算法笔记
陈奕迅本讯
欢迎加入我的知识星球,和我共同进步!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法-数组笔记
因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是使用二分法的前提条件,当大家看到题目描述满足如上条件的时候,可要想一想是不是可以用二分法了。我们先做累加,即 p[i] 表示 下标 0 到 i 的 vec[i] 累加 之和。前缀和的思路其实很简单,我给大家举个例子很容易就懂了。例如,我们要统计 vec[i] 这个数组上的区间和。---长度,可以想到滑动窗口。统一左闭右开,遵循循环不变量。原创 2024-09-30 10:01:56 · 1226 阅读 · 0 评论 -
数据结构-链表笔记
在链表中的第index个节点之前添加值为val的节点,在链表类中实现这些功能:得到第index个节点的值,在链表的第一个元素之前添加一个值为val的节点,将值为val的节点追加到链表的最后一个元素,删除链表中的第index个节点。原创 2024-10-01 17:54:28 · 483 阅读 · 0 评论 -
算法-字符串笔记
【代码】算法-字符串笔记。原创 2024-10-09 00:19:22 · 557 阅读 · 0 评论 -
动态规划之 多重背包 基础题
携带矿石资源。原创 2024-12-10 20:05:18 · 382 阅读 · 0 评论 -
数据结构-归并排序笔记
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。归并的缺点在于需要O(N)的空间复杂度,归并排序的思考更多的是解决在磁盘中的外排序问题。时间复杂度:O(N*logN)空间复杂度:O(N)稳定性:稳定。原创 2024-11-06 20:31:43 · 541 阅读 · 0 评论 -
数据结构-快速排序
快速排序法介绍:快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫快速排序时间复杂度:O(N*logN)空间复杂度:O(logN)稳定性:不稳定。原创 2024-11-04 15:34:34 · 431 阅读 · 0 评论 -
数据结构-希尔排序(ShellSort)笔记
希尔排序是对直接插入排序的优化。当gap > 1时都是预排序,目的是让数组更接近于有序。当gap == 1时,数组已经接近有序的了,这样就会很快。这样整体而言,可以达到优化的效果。希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算,这里不深究。时间复杂度O(N^1.5)空间复杂度O(1)稳定性:不稳定。原创 2024-10-31 10:38:15 · 384 阅读 · 0 评论 -
数据结构-插入排序笔记
插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。原创 2024-10-31 10:16:38 · 384 阅读 · 0 评论 -
数据结构-选择排序笔记
直接选择排序思考非常好理解,但是效率不是很好(不论数组是否有序都会执行原步骤)。实际中很少使用时间复杂度:O(N^2)空间复杂度:O(1)稳定性:不稳定。原创 2024-10-29 21:06:27 · 399 阅读 · 0 评论 -
八大排序-冒泡排序
冒泡排序应该是我们最熟悉的排序了,在C语言阶段我们就学习了冒泡排序。他的思想也非常简单:两两元素相比,前一个比后一个大就交换,直到将最大的元素交换到末尾位置。这是第一趟一共进行n-1趟这样的交换将可以把所有的元素排好。(n-1趟是因为只剩两个元素时只需要一趟就可以完成)原创 2024-10-29 20:39:22 · 311 阅读 · 0 评论 -
数据结构-图论笔记
在涉及二维表中,无论是深搜和广搜,都是定义了一个isUsed数组来标记哪一些元素已经被访问过了,重要的解题思路其实是遍历的条件。比如这一题,判断孤岛就要判断岛屿是否与边界接壤。原创 2024-10-28 11:10:52 · 1501 阅读 · 0 评论 -
数据结构-拓扑排序笔记
一聊到 拓扑排序,一些录友可能会想这是排序,不会想到这是图论算法。其实拓扑排序是经典的图论问题。原创 2024-10-28 11:08:58 · 610 阅读 · 0 评论 -
数据结构-prim算法
prim算法核心就是三步,我称为。原创 2024-10-28 10:29:24 · 383 阅读 · 0 评论 -
数据结构-并查集笔记
并查集常用来解决连通性问题。大白话就是当我们需要判断两个元素是否在同一个集合里的时候,我们就要想到用并查集。原创 2024-10-24 11:06:37 · 355 阅读 · 0 评论 -
数据结构-单调栈笔记
通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。原创 2024-10-21 17:28:46 · 550 阅读 · 0 评论 -
数据结构-贪心算法笔记
注意LinkedList的插入add方法,还有排序实现comparetor接口是怎么实现的。我们使用list.toArray()来将集合转化为数组,注意转化为二维数组的实现。我们使用list.toArray()来将集合转化为数组,注意转化为二维数组的实现。我们使用list.toArray()来将集合转化为数组,注意转化为二维数组的实现。而且使用Integer.compare()方法,防止数据溢出。这里自己实现转化集合为二维数组会超出内存限制。分两个维度,那么一个维度一个维度来。我这里统一对左边界进行排序。原创 2024-10-19 12:47:50 · 601 阅读 · 0 评论 -
数据结构-回溯笔记
1 递归函数的返回值以及参数2 回溯函数终止条件3 单层搜索的过程。原创 2024-10-17 09:39:01 · 966 阅读 · 0 评论 -
数据结构-树笔记
模板题。原创 2024-10-14 09:34:27 · 1001 阅读 · 0 评论 -
数据结构-栈与队列笔记
【代码】数据结构-栈与队列笔记。原创 2025-01-07 16:21:39 · 523 阅读 · 0 评论 -
KMP算法
比如字符串 “ABABA” 的前缀有:A,AB,ABA,ABAB比如字符串 “ABABA” 的后缀有:BABA,ABA,BA,A个人理解:对于字符串str,从 第一个字符开始的每个子串 的 最后一个字符 与 该子串的最长公共前后缀的长度 的对应关系表格。这个表我们以 int[] next 数组方式进行存储。比如说上面举的例子:子串 “A”:最后一个字符是 A,该子串的最长公共前后缀长度是 0,因此对应关系就是 A - 0。原创 2024-10-08 11:19:48 · 1010 阅读 · 0 评论 -
动态规划之 0-1背包 完全背包 基础题
如果把遍历nums(物品)放在外循环,遍历target的作为内循环的话,举一个例子:计算dp[4]的时候,结果集只有 {1,3} 这样的集合,不会有{3,1}这样的集合,因为nums遍历放在外层,3只能出现在1后面!2 第二层遍历,是顺序遍历不是倒叙遍历。递推公式,要站dp【i】的角度去想,想象dp【i】是由哪些前面的状态推倒而来的。和0-1背包模板区别:1 完全背包在两层遍历的时候,顺序没有要求。两次循环时,必须先循环遍历物品。遍历顺序以及循环顺序无要求。原创 2024-09-28 09:50:26 · 515 阅读 · 0 评论