![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刷算法
文章平均质量分 87
算法
Petrichorzncu
这个作者很懒,什么都没留下…
展开
-
算法刷题笔记——回溯算法篇
回溯法也可以叫做回溯搜索法,它是一种搜索的方式。在二叉树系列中,我们已经不止一次,提到了回溯,例如二叉树:以为使用了递归,其实还隐藏着回溯 (opens new window)。回溯是递归的副产品,只要有递归就会有回溯。所以以下讲解中,回溯函数也就是递归函数,指的都是一个函数。原创 2024-07-01 14:45:08 · 477 阅读 · 0 评论 -
算法刷题笔记--二叉树篇
感觉树这一章还是没搞清楚,可能是基础不扎实的缘故,学完C++巩固底层知识后二刷确定递归函数的参数和返回值 :确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定终止条件 : 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。确定单层递归的逻辑:确定每一层递归需要处理的信息。原创 2024-06-26 14:48:27 · 822 阅读 · 0 评论 -
算法刷题笔记--字符串篇
KMP主要应用在字符串匹配上。KMP的主要思想是当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,可以利用这些信息避免从头再去做匹配了。原创 2024-06-26 14:47:22 · 604 阅读 · 0 评论 -
算法刷题笔记--栈与队列篇
其实就是一个披着队列外衣的堆,因为优先级队列对外接口只是从队头取元素,从队尾添加元素,再无其他取元素的方式,看起来就是一个队列。而且优先级队列内部元素是自动依照元素的权值排列。缺省情况下priority_queue利用max-heap(大顶堆)完成对元素的排序,这个大顶堆是以vector为表现形式的complete binary tree(完全二叉树)。原创 2024-06-25 15:00:27 · 664 阅读 · 0 评论 -
算法刷题笔记--哈希表篇
虽然std::set、std::multiset 的底层实现是红黑树,不是哈希表,std::set、std::multiset 使用红黑树来索引和存储,不过给我们的使用方式,还是哈希法的使用方式,即key和value。std::unordered_set底层实现为哈希表,std::set 和std::multiset 的底层实现是红黑树,红黑树是一种平衡二叉搜索树,所以key值是有序的,但key不可以修改,改动key值会导致整棵树的错乱,所以只能删除和增加。我们需要依靠哈希表中的空位来解决碰撞问题。原创 2024-06-25 14:58:51 · 969 阅读 · 0 评论 -
算法刷题笔记--链表篇
注意要先写cur->next,因为如果先写了cur->next->next,假如此时cur->next==null,cur->next->next会出现空指针报错。因为设计链表中所有的方法都是自己写的,所以有可能出现的问题是,实际问题与所表现出来的问题不一致。例如:插入算法写错了,但是运行报错是在取值算法中体现。在链表第index个节点前面插入一个节点。获取链表第index个节点的数值。删除链表的第index个节点。在链表的最前面插入一个节点。在链表的最后面插入一个节点。原创 2024-06-25 14:52:13 · 211 阅读 · 0 评论 -
算法刷题笔记--数组篇
vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。在内部,unordered_set中的元素并不按照任何特定的顺序排序,而是根据它们的散列值组织到桶中,从而允许根据它们的值直接快速访问单个元素(平均时间复杂度为常数)。在unordered_set中,元素的值同时也是唯一标识它的键。键是不可变的,因此,unordered_set中的元素在容器中不能被修改,但是它们可以被插入和删除。原创 2024-03-23 18:55:02 · 974 阅读 · 0 评论