【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. 删除排序链表中的重复元素 IILeetCode21. 合并两个有序链表

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

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

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

原文地址:https://www.cnblogs.com/HuangYJ/p/12837551.html