04 2024 档案
摘要:寻路 就是对图的遍历,目前主要处理对可转换为二维矩阵的方格图遍历 DFS 与 BFS 两种最基础的遍历方式,DFS采用回溯思想,将从起点开始沿着一个方向搜索,直到超出界限(回溯)或者到达目的地(返回结果) //只考虑上下左右四个方向 vector<vector<pair{int,int}>> res
阅读全文
摘要:HashTable 一般常用的unordered_set、unordered_map都是基于哈希表实现的,哈希表主要需要注意的是哈希冲突,迭代器等 基础 哈希映射 使用哈希函数将键映射到索引的数据结构。 即将原始数组索引通过哈希函数映射到一个哈希值上,从而将一个大范围索引,减小到一个小的固定范围 哈
阅读全文
摘要:输入流 c++ 中常用cin接受输入,在C中可以定义main函数 int main(int argv,char* argc) 来接受参数数量和参数字符串 在c++中可以通过接受字符串流的方式,分段处理输入的字符串 //接受输入的字符串 read text 123 string line; getli
阅读全文
摘要:deque 与list类似支持在常数时间内对前后端进行增删操作,同时又可以支持根据索引获得元素 deque的内存大小也是动态调整的,并且在增删操作时会保证迭代器的有效性。 内存局部性:deque内部利用了多个缓冲区,有助于提高内存局部性,从而在某些情况下提供更好的性能 工作原理 成员变量 eleme
阅读全文
摘要:list list是一种基于双向链表的数据结构,适用于需要在序列中执行频繁插入和删除操作的场景 特性 本质上是一个双向链表,允许在序列的两端和中间执行插入和删除操作 只能通过迭代器访问元素,即访问元素的时间复杂度为 动态内存管理,内部通过类似指针的节点实现元素存储,一个节点存储了当前
阅读全文
摘要:本质 本质上就是一个数组,存储区域在内存中连续,但相比于静态数组,其可以在运行时动态调整大小(push_back,pop),无需手动管理内存 动态调整 -- 内存管理 vector中有两个状态信息来维护内存管理:capacity和size。 capacity:表示当前分配到的内存空间大小 size:
阅读全文
摘要:问题 求解乱序数组中第k个数 利用堆实现 时间复杂度是 。以求第K大的数为例,使用前k个数先建立小根堆,即堆顶元素为当前遍历的数字中最小值,当堆的长度大于k时,且这次入堆元素比堆顶元素大时,弹出堆顶元素,然后加入当前这个元素,最后返回现在这个堆就是最大的K个数构成的堆,并且堆顶
阅读全文