【40讲系列1】数组、链表

一、数组

查找:O(1)

插入、删除:O(n)

二、链表

应用场景:1. 频繁插入和删除,链表优于数组。 2. 不知道有多少个元素需要添加。

查找:O(n)

插入、删除:O(1)

三、问答题

数组和链表的区别以及应用场景;假如有5万个数,有序,需要查找某一个数,问需要使用数组还是链表?

四、典型例题

例题①:反转一个单链表(LC206、剑指15.反转链表)

例题②:两两交换链表中相邻的节点(LeetCode24. 两两交换链表中的节点)

例题③:判断链表中是否有环(LC141、剑指55.链表中环的入口结点)

五、扩展例题—数组

第一组(原地移动元素问题):LeetCode283. 移动零、LeetCode27. 移除元素、LeetCode26. 删除排序数组中的重复项、LeetCode80. 删除排序数组中的重复项 II

第二组(排序算法思路的应用):LeetCode75. 颜色分类、LeetCode88. 合并两个有序数组、LeetCode215. 数组中的第K个最大元素

第三组(对撞指针):LeetCode167. 两数之和 II - 输入有序数组、LeetCode125. 验证回文串、LeetCode344. 反转字符串、LeetCode345. 反转字符串中的元音字母、LeetCode11. 盛最多水的容器

第四组(滑动窗口):LeetCode209. 长度最小的子数组、LeetCode3. 无重复字符的最长子串、LeetCode438. 找到字符串中所有字母异位词、LeetCode76. 最小覆盖子串

六、扩展例题—链表

第一组:LeetCode206. 反转链表、LeetCode92. 反转链表 II

第二组:LeetCode83. 删除排序链表中的重复元素、LeetCode86. 分隔链表、LeetCode328. 奇偶链表、LeetCode2. 两数相加、LeetCode445. 两数相加 II

第三组(虚拟头节点):LeetCode203. 移除链表元素、LeetCode82. 删除排序链表中的重复元素 II、LeetCode21. 合并两个有序链表

第四组:LeetCode24. 两两交换链表中的节点、LeetCode25. K 个一组翻转链表、LeetCode147. 对链表进行插入排序、LeetCode148. 排序链表

第五组:LeetCode237. 删除链表中的节点

第六组(双指针):LeetCode19. 删除链表的倒数第N个节点、LeetCode61. 旋转链表、LeetCode143. 重排链表、LeetCode234. 回文链表

 

posted @ 2020-11-19 19:44  不学无墅_NKer  阅读(165)  评论(0)    收藏  举报