算法学习
文章平均质量分 83
shepi_666
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
BFS算法
BFS算法的**核心思想**为:> 将一些问题抽象为图,从一个点开始,向四周扩散。一般来说啊,BFS算法都是用到[**队列**]的,将一个节点的周围的所有节点加入到队列。原创 2024-10-25 20:45:23 · 1189 阅读 · 0 评论 -
数组奇技淫巧之-差分数组
差分数组主要适合的场景为。假设有一个数组nums,需要对区间[i, j]之间的元素全部加 1 , 再给区间[k, l]之间的元素全部减 3, 而后再给区间[x, y]之间的元素全部加 2 ,最后再给…如果对每一个操作都使用先遍历找到指定的区间元素,再进行修改,光是找到找到对应的区间需要ON的时间复杂度了,对于频繁改动的情况,这种效率非常低。这里可以考虑使用差分数组的技巧。类似于前缀和技巧构造的preSum数组,考虑对nums数组构造一个diff差分数组,diff[i]就是nums[i]和。原创 2024-10-25 20:44:41 · 1053 阅读 · 0 评论 -
二叉树算法
对于BST的每一个节点node,左子树的节点的值都要比node值小,右子树节点的值都要比node值大对于BST的每个节点node,他的左侧子树和右子树都是BSTBST的中序遍历结果是有序的(升序)原创 2024-10-25 20:43:16 · 776 阅读 · 0 评论 -
回溯算法详解
抽象的说,解决一个回溯问题,实际上就是遍历一遍决策树的过程,树的每一个叶子节点存放着一个合法答案。将整棵树遍历一遍,就将叶子节点的答案收集起来,就能得到所有的合法答案。原创 2024-10-25 20:42:41 · 1842 阅读 · 0 评论 -
前缀和算法
前缀和算法用于快速,频繁计算一个索引区间内的元素之和原创 2024-10-25 20:41:31 · 362 阅读 · 0 评论 -
双指针技巧
双指针的技巧主要分为两类:左右指针和快慢指针。左右指针:两个指针相向而行或者相背而行快慢指针:两个指针同向而行,但是一快一慢原创 2024-10-25 20:40:40 · 666 阅读 · 0 评论 -
数据结构详解
数组增删改查的时间复杂度见下表addo1oNremoveo1oNseto1o1geto1o1addoN。原创 2024-10-25 20:39:36 · 772 阅读 · 0 评论 -
算法核心框架
于数据结构和算法的精炼总结:所有的数据结构,底层皆为数组(顺序存储)和链表(链式存储)数据结构的关键点在于遍历和访问,即元素的增删改查等基本操作所有的算法,本质皆为穷举穷举的关键点在于无遗漏和无冗余。熟悉掌握算法框架,可以做到无遗漏;充分利用信息,可以做到无冗余。原创 2024-10-25 20:38:20 · 455 阅读 · 0 评论 -
2.队列
2. 队列2.1 队列介绍队列是一个有序列表,可以使用数组或者链表来实现遵循先进先出的原则。即:先存入队列的数组,先取出;后存入队列的元素,后取出队列的示意图2.2 使用数组模拟队列 如上图所示, 使用数组的结构来模拟队列,需要声明一个最大的容量maxSize。同时,因为输出于输出分别在队列的前后端进行,因此我们需要证明两个指针front和rear,分别指向队列的头部和尾部。其中,front和队列的输出有关,rear和队列的输入有关。 队列中应当由两个方法,分别是添加元素add(原创 2021-04-21 13:15:31 · 119 阅读 · 0 评论 -
3 链表(LinkedList)
3 链表(LinkedList)3.1 链表介绍链表是以节点的方式来存储数据的每一个节点包含data域和next域,next域存储的是下一个节点的内存地址链表的各个节点在内存中并不一定是连续存放的链表根据有无头节点分为两类链表的一个示例3.2 实现单向链表使用单项链表对水浒英雄实现增删改查的操作两种方式添加元素直接在链表中添加元素根据任务的排名将水浒英雄添加到指定位置,如果链表中已经有了这个排名,抛出异常3.3 单向链表代码cla原创 2021-04-24 18:42:33 · 129 阅读 · 0 评论 -
1.稀疏数组
1.稀疏数组1.1 基本介绍 当一个数组中大部分元素为0,或者为同一个数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法:记录一个数组的size,有多少个不同的值把具有不同值的元素的下标和值记录在一个小规模数组(稀疏数组)中,从而缩小程序的规模1.2 经典案例该二维数组的很多默认值是0,因此记录了许多没有意义的数据—>稀疏数组1.3思路分析1.3.1 二维数组转稀疏数组的思路:遍历原始的二维数组,得到原始数组中的有效数据的个数sum根据sum的值创建一个原创 2021-04-21 11:05:12 · 95 阅读 · 0 评论 -
4 栈(stack)
4 栈4.1 实际需求 科学计算器就是用到了栈的原理4.2 介绍英文名为:stack栈是一个先进后出(First in last out)的有序列表栈是 限制线性表,元素的插入和删除只能在线性表的同一端进行,允许插入和删除的一端称为变化的一端,是栈顶,另外一端为固定的一端,称为栈底。根据栈的定义,最先放入栈中的元素在栈底,最后放入栈中的元素在栈顶。最先弹出的元素在栈顶,最后弹出的元素在栈底。压栈(push)和弹栈(pop)的原理图4.3 栈的经典应应用场景原创 2021-05-02 09:49:03 · 308 阅读 · 0 评论 -
动态规划基础知识详解
递归和迭代两种方法的区别在于,前者是自顶向下的,后者是自底向上的。在拆分问题的时候,需要自顶向下,列出状态转移方程,然后自底向上更新dp数组。原创 2024-10-20 17:43:09 · 1298 阅读 · 0 评论
分享