链表
笔试面试中常考的链表算法
Code_Yilia
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【链表】LeetCode #61旋转链表
题目链接: LeetCode #61旋转链表 题目描述: #61. 旋转链表 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: 4->5->1->2->3原创 2020-08-13 09:36:26 · 239 阅读 · 0 评论 -
【链表】LeetCode #24 两两交换链表中的节点
题目链接: LeetCode #24 两两交换链表中的节点 题目描述: #24. 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 通过次数135,890 提交次数204,775 分析: 两两交换,如果是奇数,最后一位不动。 如:1,2,3,4,5 交换后的结果应为 2,1,4,3,5 方案如下: 因为原创 2020-08-12 16:18:05 · 203 阅读 · 0 评论 -
【链表】LeetCode #2 两数相加(基于链表的两数相加,执行用时战胜 99.89%的Java提交)
题目链接: LeetCode #2 两数相加 题目描述: #2. 两数相加 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 8原创 2020-08-12 11:09:52 · 270 阅读 · 1 评论 -
【链表】LeetCode #反转链表(两种方法:迭代法、递归法)
题目链接: LeetCode #反转链表 题目描述: #206. 反转链表 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 通过次数295,766 提交次数422,186 方法一:迭代法 对于每个节点,需要做以下三步: 保存当前节点的下一个节点 next; 让当前节点 cur 指向前一个节点 pre; 删除原创 2020-08-02 21:33:31 · 401 阅读 · 0 评论 -
【链表】LeetCode #203 移除链表元素
题目链接: LeetCode #203 移除链表元素 题目描述: #203. 移除链表元素 删除链表中等于给定值 val 的所有节点。 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5 通过次数92,417 提交次数201,211 分析: 本题是道简单题,但是想一次就A还是有点儿不容易的。 需要注意的有以下几点: 要做删除操作,需要找到的是被删节点的前一个节点,这样只需让 i.next原创 2020-08-01 20:09:53 · 294 阅读 · 0 评论 -
【链表】LeeTCode #160 相交链表(双指针,时间复杂度O(m+n))
题目链接: LeeTCode #160 相交链表 题目描述: #160. 相交链表 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node with value = 8 输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。原创 2020-08-01 17:11:50 · 352 阅读 · 0 评论 -
【链表】LeetCode #141环形链表(快慢指针)
题目链接: LeetCode #141环形链表 题目描述: #141. 环形链表 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 示例 2: 输入:head = [1,2], pos = 0 输出:true 解释:链表中有一个环,其尾部连接到原创 2020-08-01 15:33:51 · 237 阅读 · 0 评论 -
【链表】LeetCode #19 删除链表的倒数第N个节点(时间复杂度O(n),在所有Java提交中击败了100%的用户)
题目链接: LeetCode #19 删除链表的倒数第N个节点 题目描述: #19. 删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 通过次数205,209 提交次数524,857 分析: 这个题的难度在于如何在一趟原创 2020-07-30 11:08:46 · 319 阅读 · 0 评论 -
【链表】LeetCode #83 删除排序链表中的重复元素 (两种方法)
题目链接: LeetCode #83 删除排序链表中的重复元素 题目描述: #83. 删除排序链表中的重复元素 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 通过次数123,788 提交次数242,480 方法一: 直接对比当前结点的值 cur.val 与下一个结点的值 cur.next.val 是否相等,若相等原创 2020-07-30 10:21:37 · 300 阅读 · 0 评论 -
【链表】LeetCode #21 合并两个有序链表
题目链接: LeetCode #21 合并两个有序链表 题目描述: #21. 合并两个有序链表(难度:简单) 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 通过次数325,435提交次数512,003 分析: 该题是链表题目中的基础题,太久没接触链表了,还是给自己绕了好久… 定义两个指针 head、pre:初始化原创 2020-07-28 17:16:28 · 262 阅读 · 0 评论
分享