链表
JustSleep
这个作者很懒,什么都没留下…
展开
-
LeetCode 2. Add Two Numbers
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -...原创 2019-02-09 15:41:47 · 80 阅读 · 0 评论 -
LeetCode 148. Sort List
在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 解题思路: 本题利用归并排序,将链表从中间分开,分开后的两段利原创 2019-02-11 17:05:14 · 97 阅读 · 0 评论 -
LeetCode 147. Insertion Sort List
对链表进行插入排序。 插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。 插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插...原创 2019-02-11 16:40:09 · 120 阅读 · 0 评论 -
LeetCode 143. Reorder List
给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 给定链表 1->2->3->4, 重新排列为 1->4->2->3. 示例 2: 给定链表 1->2->3->4->5, 重...原创 2019-02-11 16:25:39 · 91 阅读 · 0 评论 -
LeetCode 141. Linked List Cycle
problem1:环形链表一 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 解题思路: 建立一个节点集...原创 2019-02-11 12:09:11 · 111 阅读 · 0 评论 -
LeetCode 138. Copy List with Random Pointer
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的深度拷贝。 解题思路: 这道链表的深度拷贝题的难点就在于如何处理随机指针的问题,由于每一个节点都有一个随机指针,这个指针可以为空,也可以指向链表的任意一个节点,如果我们在每生成一个新节点给其随机指针赋值时,都要去遍历原链表的话,OJ上肯定会超时,所以我们可以考虑用Hash map来...原创 2019-02-11 11:36:24 · 105 阅读 · 0 评论 -
LeeCode 109. Convert Sorted List to Binary Search Tree
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定的有序链表: [-10, -3, 0, 5, 9], 一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 ...原创 2019-02-10 17:32:01 · 103 阅读 · 0 评论 -
LeetCode 92. Reverse Linked List II
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明: 1 ≤ m ≤ n ≤ 链表长度。 示例: 输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 1->4->3->2->5->NULL 解题思路: 先找到第一个要反转的元素的前驱(prev),再计算要进行反转的元素个数,对元素进行...原创 2019-02-10 16:55:11 · 81 阅读 · 0 评论 -
LeetCode 206. Reverse Linked List
反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 解题思路: 新建一个指针,使用头插法。 public ListNode reverseList(ListNode head) { // 头结点 ListNode r...原创 2019-02-10 15:30:47 · 102 阅读 · 0 评论 -
LeetCode 86. Partition List
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。 你应当保留两个分区中每个节点的初始相对位置。 示例: 输入: head = 1->4->3->2->5->2, x = 3 输出: 1->2->2->4->3->5 解题思路: 创建两个链表a,b,将原来链表中的每个结点,小...原创 2019-02-10 10:42:06 · 89 阅读 · 0 评论 -
LeetCode 82. Remove Duplicates from Sorted List II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2: 输入: 1->1->1->2->3 输出: 2->3 解题思路: 利用两个指针pre和cur,pre初始指向前面的头结点...原创 2019-02-09 19:57:38 · 95 阅读 · 0 评论 -
LeetCode 83. Remove Duplicates from Sorted List
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 解题思路: 链表的第一个元素独立不重复,并依次判断后面的元素,加入到链表中。 public ListNode deleteDupl...原创 2019-02-09 19:42:37 · 69 阅读 · 0 评论 -
LeetCode 61. Rotate List
给定一个链表,旋转链表,将链表每个节点向右移动 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-原创 2019-02-09 19:30:22 · 86 阅读 · 0 评论 -
LeetCode 24. Swap Nodes in Pairs
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 解题思路: 两两进行交换,依次向后迭代。 public static ListNode swapPairs(ListNode head) {...原创 2019-02-09 17:33:58 · 71 阅读 · 0 评论 -
LeetCode 21. Merge Two Sorted Lists
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 解题思路: 使用带有头结点的链表,将较小的结点值的结点摘下来接到链表的末尾,同时被摘的链头引用移动到下一个结点,一直操作,到到原先两个链表中有一个为空,...原创 2019-02-09 16:32:19 · 77 阅读 · 0 评论 -
LeetCode 19. Remove Nth Node From End of List
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 解题思路: 先让一个指针走找到第N个节点,然后再让一个指针指向头结点,然后两具指针一起走,直到前一个指针...原创 2019-02-09 15:56:12 · 86 阅读 · 0 评论 -
LeetCode 160. Intersection of Two Linked Lists
编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 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 输入解释:相交节点的...原创 2019-02-11 17:25:44 · 91 阅读 · 0 评论