# 数组相关
数组并不会有太复杂的题目来考,所以大多只是将想法转换成代码;
在数组这块会有一些常用的解题方式,如双指针法,滑动窗口 (双指针的一种应用),前缀和解决时间复杂度问题,即创建一个新的数组用于存储对应下标前面几个元素的和;二分查找等
# vector 与普通数组的使用区别
只有在一些低性能场景下,数组对比哈希表和 vector 会有一定的性能优势,会使用数组,其他大多数场景都会更加推荐使用 vector
1 | //初始化 |
# 链表
链表最重要的一点就是,我们要记住,大多数题目都有可能会删除头节点的可能性,所以我们需要创建一个虚拟的头节点以避免这个问题。
# 哈希表
常用的操作方式
以最常用的 unordered_map 和 unordered_set 为例
1 | //初始化 |
# 字符串
在使用和学习字符串的时候,尽量不要去使用字符串的库函数,因为字符串的库函数我们并不一定记得住他的时间复杂度,而面试的时候如果被问到就会很显然的露怯
解题的时候,类似于反转类型的题目可以使用双指针法,而类似于字串的题目则可以考虑使用 KMP 来解决,而 KMP 掌握的不是很扎实,所以以后还需要回头来看。