- 博客(10)
- 收藏
- 关注
原创 基础算法篇(蓝桥杯常考)
顾名思义,就是把所有情况全都罗列出来,然后找出符合题⽬要求的那⼀个。因此,枚举是⼀种纯暴⼒的算法.使⽤枚举策略时,重点思考枚举的对象(枚举什么),枚举的顺序(正序还是逆序),以及枚举的⽅式(普通枚举?此时如果需要⽤数据的值来映射数组的下标时,就可以⽤离散化的思想先预处理⼀下所有的数据,使得每⼀个数据都映射成⼀个较⼩的值。前缀和与差分的核⼼思想是预处理,可以在暴⼒枚举的过程中,快速给出查询的结果,从⽽优化时间复杂度。分治,字⾯上的解释是「分⽽治之」,就是把⼀个复杂的问题分成两个或更多的相同的⼦问题,直到。
2025-03-23 16:44:47
885
原创 从0实现哈希表
但是要注意, key 有可能是负数,取模之后会变成负数。除留余数法: hash(key) = key % N。• 但是正数加上模数会变⼤,所以统⼀再取⼀次模。最终就是 (key % N + N) % N。• 负数补正的操作为:加上模数即可。
2025-03-08 12:55:18
284
原创 从0实现堆
堆(heap),是⼀棵有着特殊性质的完全⼆叉树,可以⽤来实现优先级队列(priority_queue)。是⼀棵完全⼆叉树;对于树中每个结点,如果存在⼦树,那么该结点的权值⼤于等于(或⼩于等于)⼦树中所有结点权值。如果根结点⼤于等于⼦树结点的权值,称为⼤根堆;反之,称为⼩根堆。
2025-03-07 20:54:42
470
1
原创 从0实现二叉树的存储与遍历
第⼀⾏⼀个整数n,表⽰结点数。之后n⾏,第⾏两个整数l 、r,分别表⽰结点i的左右⼦结点编号。若l=0则表⽰⽆左⼦结点,同理。2.1 深度优先遍历不同于常规树的深度优先遍历,⼆叉树因其独特的性质可以划分成三种深度优先遍历:先序遍历,中序遍历,和后序遍历。其中,三种遍历⽅式的不同在于处理根节点的时机。对于⼀棵⼆叉树⽽⾔,整体可以划分成三部分:根节点+左⼦树+右⼦树:• 先序遍历的顺序为:根+左+右;• 中序遍历的顺序为:左+根+右;• 后序遍历的顺序为:左+右+根。
2025-03-02 15:05:37
491
1
原创 从0实现栈,队列(包括STL)
int top;//1.push(x) :向栈中加⼊⼀个数x//2.出栈//3.查询栈顶元素//4.判断栈是否为空//5. 栈中元素个数//队列(先进先出)// 1.⼊队// 2.出队// 3.查询队头元素// 4.查询队尾元素// 5.判断是否为空// 有效元素的个数。
2025-02-28 20:24:27
306
原创 从0实现链表(动态/静态)
///1.创建节点//2.动态申请节点并初始化//3.打印链表//4.头插法//5.尾插法//6.头删法//7.尾删法//8.删除所有节点//test////1.创建-初始//2.头插法//3.遍历链表//4.按值查找//5.在任意位置插入//6.删除元素//test。
2025-02-22 20:30:00
167
2
原创 当顺序表遇上STL函数:一场高效的替代之旅
vector 的底层就是⼀个会⾃动扩容的顺序表,其中创建以及增删查。• 如果⼤于原始的⼤⼩,多出来的位置会补上默认值,⼀般是 0。• 如果⼩于原始的⼤⼩,相当于把后⾯的元素全部删掉。改等等的逻辑已经实现好了,并且也完成了封装。• 修改 vector 的⼤⼩。//1.创建vector。• 清空 vector。
2025-02-21 15:14:42
466
1
原创 从0实现顺序表
//1.创建//2.尾插//3.头插(从右向左)//4.从任意位置插入//5.尾删//6.头删//7.任意位置删除//8.按值查找//9.按位查找//10.修改元素//11.清空//test
2025-02-21 14:21:16
207
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人