- 博客(14)
- 收藏
- 关注
原创 top5-k个一组反转链表
构造一个容积为k - 1的栈,当达到体积后判断是否达到终止条件即:cur->next是否为nullptr,如果为则说明到达结尾开始回溯。如果没有到达则继续递归处理。到达终止条件后开始处理栈里面的数据。我们将当前节点指向head的next指针。然后创建一个临时节点存储当前节点,我们该次递归状态下的栈中数据,将当前节点的next节点指向栈中的节点(而栈中节点保存的是上一次的进栈数据因此完成了反转)以此递归下去,最终返回最外层递归的cur即可。递归方法处理,利用栈的后进先出的特性,结合栈+递归来处理本题的反转。
2023-09-26 11:29:53 58 1
原创 Top1-最长子串
用双指针算法维护一个哈希表,记录不同字母出现的次数,一个指针往前移动知道有字母的出现次数大于1则停下另一个指针开始移动知道字母的次数为1的时候第一个指针继续移动指针移动过程中记录 i - j + 1的最大长度。
2023-09-25 21:13:58 96 1
原创 C++模板相关问题
文章目录为什么模板类都要放在一个h文件中?模板类和模板函数的区别?为什么模板类都要放在一个h文件中?模板由template<…>处理的任何东西都意味着编译器在当时不为他分配存储空间处于等待状态,直到被一个模板实例告知则在编译器和连接器的某处有机制去掉多重定义。在分离式编译环境下,编译器编译某个cpp文件时并不知道另一个cpp文件存在,当遇到歧义符号会寄希望于连接器,这种模式遇到模板就无法运作。因此需要需要放在同一.h文件下。模板类和模板函数的区别?模板类实例化必须由程序员在程序
2023-09-18 17:17:25 134 1
原创 C++自整理+理解八股(自用)
循环引用指的是使用多个共享指针时,出现了指针之间互相指形成环的情况,类似于死锁。这种情况智能指针不能正常调用对象的析构函数,从而造成内存泄露。面向对象即万物皆为对象,我们使用一个物品类似电话无需知道内部构造直接使用。使用的是功能函数和属性等。三大特征为:封装、继承、多态封装主要依赖于私有的属性和功能函数,从而使得外部使用的时候不需要知道内部构造。继承可以让子类继承基类的功能同时扩展基类,主要利用函数的重写功能,设计技术:虚函数、纯虚函数、且依赖于关键字override。减少了代码冗余。
2023-09-18 17:12:32 273 1
原创 算法-数组中的第K个最大元素
请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。输入: [3,2,3,1,2,4,5,5,6], k = 4。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。输入: [3,2,1,5,6,4], k = 2。
2023-09-14 20:12:32 164 1
原创 算法-模拟LRU缓存机制
已知:哈希表(unordered_map)查找get(),增,改put()为O(1),但是无顺序,由题意看出我们需要记录进入缓存的先后。可以实现一个双向链表来完成队列的作用,最新插入的可以在队尾插入,而达到容量需要删除的则是队首的元素。最关键的是模拟双向链表如何实现,因为哈希表可以直接使用unorder_map来实现。2、定义根据节点来实现的双向链表的功能:增、删头,改,删任意点的功能。1、定义节点的类:需要定义两个指针一个指向前、一个指向后。
2023-09-11 16:52:27 116
原创 C++ACM模式输入字符流
2、input.substr(i, p - i):用于从input字符串中提取一段子串,i和p-i表示开始和结束的位置(但不包括结束位置)真正的起始位置:i 真正的结束位置是: i + p - i - 1。1、getline(cin, input) 是 C++ 标准库中的一个函数,用于从标准输入流 cin 中读取一行文本,并将其存储到字符串变量 input 中。遇到换行符 \n 或文件结束符。读取完成后,结果将存储在字符串变量 input 中。
2023-09-09 22:15:05 104 1
原创 数据库面试常考知识点
多版本并发控制。在读取数据时通过一种类似快照的方式将数据保存下来,这样写锁和读锁不冲突。不过只在读已提交和可重复读两个级别下工作。主要维护了事物id和版本控制链。访问数据时,获取数据中的事物id若id小于readview的最小值,则说明已经提交,可以被用户获取;若在readview中则通过版本控制链roll_pointer去到合适的版本显示。A事务读取未提交的数据X后,数据发生回滚。此时A事务读取的数据是脏数据。
2023-09-07 15:57:50 43 1
原创 Top2-反转链表
定义一个next节点并将其l1的下一个值–>因为l1的下一个值已被存储我们可以修改l1的下一个值为prev–>再将prev节点更新为cur节点–>同时cur更新为next节点。功能函数:因为要操作每一个节点因此都定义出各个节点的指针方便操作,且由于构造函数是给了下一个节点指针的默认值,因此我们要给值为-1;定义prev节点为-1–>定义当前cur节点为传入节点l1–>用while循环迭代。定义节点结构体(val, 下一个节点的指针,构造函数)–>我们最后返回prev节点的值。
2023-09-06 16:19:59 48 1
原创 【算法1-合并链表】
类型的指针来操作实例head–>当l1和l2都不为空链表的时候进入while循环–>比较l1的头结点判断完之后合并链表的指针也往后移动–>最后while循环结束再进行扫尾工作,把剩下的一个不为空的链表放进合并链表当中–>最后返回。主函数部分:通过new关键字创建堆存放创建的muList实例,并由于要操作它我们定义myList。构造功能函数:当其中一个链表为空直接返回另一个链表。
2023-09-06 15:42:38 44 1
原创 数据范围判断大概用哪种算法
树状数组、set/map、heap、dijkstra+heap、prim+heap、Kruskal、、朴素Dijstra、朴素Prim、Bellman-Ford。(1)n
2023-09-04 12:46:13 151
原创 数据库1-的全文本搜索
有一个note_text列,进行全文本搜索时,MySQL根据子句FULLTEXT(note_text)的指示对它进行索引。增、改、删索引可以随之自动更新。SELECT检索note_text列,用于WHERE子句使用Match(note_text)指定列进行全文本搜索,用Against('rabbot')作为搜索词并返回包含搜索词的行。查询扩展后,带有"anvils"的行在最前面,后面是包含此次的句子中其他词的行也被索引出来。特殊要求:当需要查询一个包含“anvils"词的注释,还要查询与此注释相关的行。
2023-09-01 10:20:49 56
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人