链表
失业边缘,疯狂挣扎
这个作者很懒,什么都没留下…
展开
-
86. 分隔链表(Java)(dummy node,哑节点)
1 题目给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5https://leetcode-cn.com/problems/partition-list/2 Java2.1 方法一(dummy node,哑节点)class原创 2020-08-08 00:05:56 · 391 阅读 · 0 评论 -
19. 删除链表的倒数第N个节点(Java)(快慢指针)
1 题目给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?来源:力扣(LeetCode)链接:https://leetcode-c...原创 2020-05-04 19:39:13 · 175 阅读 · 0 评论 -
2. 两数相加(Java)(字节面试)(错误;链表转数字)(链表直接相加)
1 题目给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...原创 2020-05-03 17:06:22 · 193 阅读 · 0 评论 -
23. 合并K个排序链表(Java)(归并链表)(k指针)(最小堆)
1 题目合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-k-s...原创 2020-05-02 19:37:56 · 160 阅读 · 0 评论 -
148. 排序链表(Java)(归并排序链表)
1 题目在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5来源:力扣(LeetCode)链接:https://leetcode...原创 2020-04-25 17:03:29 · 196 阅读 · 0 评论 -
142. 环形链表 II(Java)(HashSet查重)
1 题目链表无环返回null链表有环返回环的入口节点https://leetcode-cn.com/problems/linked-list-cycle-ii/2 Java2.1 方法一(HashSet查重)/** * Definition for singly-linked list. * class ListNode { * int val; * ListN...原创 2020-04-24 17:21:42 · 116 阅读 · 0 评论 -
专题:链表双指针问题(快慢指针、相遇指针)
1 获取倒数第k个元素1.1 题目面试题22. 链表中倒数第k个节点https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof1.2 快慢指针/** * Definition for singly-linked list. * public class ListNode { * ...原创 2020-04-24 17:06:14 · 488 阅读 · 0 评论 -
141. 环形链表(Java)(HashSet查重)(相遇指针)
1 题目给定一个链表,判断链表中是否有环https://leetcode-cn.com/problems/linked-list-cycle/2 Java2.1 方法一(HashSet查重)/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next;...原创 2020-04-24 14:00:39 · 230 阅读 · 0 评论 -
面试题52. 两个链表的第一个公共节点(Java)(HashSet查重)(双指针,拼接链表,思维)
1 题目输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 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 (注...原创 2020-03-23 12:59:04 · 170 阅读 · 0 评论 -
面试题35. 复杂链表的复制(Java)(HashMap记录duplicate)
1 题目请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 ...原创 2020-03-03 17:37:52 · 150 阅读 · 0 评论 -
面试题18. 删除链表的节点(Java)
1 题目给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,...原创 2020-03-03 13:58:27 · 175 阅读 · 0 评论 -
面试题25. 合并两个排序的链表(21. 合并两个有序链表)(Java)(迭代,双指针,原地连接)(迭代,双指针,新链表)(减治递归)
1 题目2 Java2.1 方法一(迭代)注意需要返回第一个head所以ListNode head = new ListNode(-1);ListNode l = head;这样l在往后遍历的时候,head一直保存着头结点(实际是head.next)/** * Definition for singly-linked list. * public class ListNode ...原创 2020-03-02 17:35:45 · 176 阅读 · 0 评论 -
面试题24. 反转链表(206. 反转链表)(Java)(递归,原地反转)(迭代,原地反转)(迭代,反转至新链表,头插式)
1 题目定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000来源:力扣(LeetCode)链接:https://leetcode-cn.com/probl...原创 2020-03-02 14:27:06 · 143 阅读 · 0 评论 -
面试题06. 从尾到头打印链表(Java)(链表遍历,一叉树遍历)
1 题目输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]2 Java2.1 方法一(很傻)存到集合中,再转化为数组/** * Definition for singly-linked list. * public class ListNode { * int val; * L...原创 2020-02-26 22:57:24 · 185 阅读 · 0 评论 -
面试题22. 链表中倒数第k个节点(Java)(双指针,快慢指针)
1 题目输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.来源:力扣(LeetCode)...原创 2020-02-26 21:52:06 · 135 阅读 · 0 评论