【数据结构/链表】leetcode刷题路线(持续更新)
Why:为什么要使用链表?
- 链表(Linked List)是最简单的线性的、动态数据结构。理解它是理解树结构、图结构的基础。
- 更好的理解一些经典算法的实现,例如LRU缓存淘汰算法。
What:链表包含哪些内容
链表的基础知识
- 从底层的存储结构来讲,链表是通过指针将一组零散的内存块串联起来使用
- 常见的链表结构有三种,分别是:单链表、双链表、循环链表
- 操作时间复杂度与数组比较
链表的求解技巧
- 理解指针:将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量
- 声明虚拟头节点
ListNode* dummyHead = new ListNode(0); // 声明虚拟头节点
dummyHead->next = head; // 将虚拟头结点指向head
How:通过多次训练熟练掌握链表的使用
具体刷题路线
个人leetcode账号
当前刷题量364(131/199/33)
- 203.移除链表元素
- 707.设计链表
- 206.翻转链表
- 24.两两交换链表中的节点
- 19.删除链表的倒数第N个节点
- 07.链表相交
- 142.环形链表II
- 21.合并两个有序链表
- 23.合并K个升序链表
- 25.K个一组翻转链表
- 61.旋转链表
- 82.删除排序链表中的重复元素
- 83.删除排序链表中的重复元素
- 86.分隔链表
- 92.反转链表II
- 109.有序链表转换二叉搜索树
- 114.二叉树展开为链表
- 138.复制带随机指针的链表
- 141.环形链表
- 143.重排链表
- 146.LRU缓存机制
- 147.对链表进行插入排序
- 148.排序链表
- 160.相交链表
- 234.回文链表
- 237.删除链表中的节点
- 706.设计哈希映射
- 641.设计循环双端队列
- 622.设计循环队列
- 876.链表的中间节点
- 2058.找出临界点之间的最小和最大距离
- 2074.反转偶数长度组的节点
- 2095.删除链表的中间节点
参考资料
- leetocde题库
- 代碼随想录
- 《数据结构与算法之美》链表