
链表
puspos
这个作者很懒,什么都没留下…
展开
-
23. 合并K个排序链表_合并k个数组
问题 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 例子 思路 方法1 遍历链表数组,顺序取出链表和head合并 方法2 归并分治的方法,一次合并2i和2i+1,并放在i下标【如果为奇数lists[len/2]=lists[len-1]】最后返回lists[0] 代码 //方法1 class Solution { publ...原创 2020-03-20 00:24:16 · 141 阅读 · 0 评论 -
61. 旋转链表
问题 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 例子 思路 方法1 把链表倒数第k个结点拿出来,插到最前面,同时把倒数k+1个结点的next置为空 方法2 代码 //方法1 class Solution { public ListNode rotateRight(ListNode head, int k) { if...原创 2020-03-19 19:32:49 · 90 阅读 · 0 评论 -
148. 排序链表
问题 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 例子 思路 原来使用归并时,都是 O(N)的, * 需要复制出相等的空间来进行赋值归并。对于链表,实际上是可以实现常数空间占用的(链表的归并 * 排序不需要额外的空间)。 方法1 要求O(nlogn),所以又二分的时,使用归并排序,先利用快慢指针,找到中间结点,然后分别归并排序,然后将两个有序的链表合并 ...原创 2020-03-19 12:22:14 · 143 阅读 · 0 评论 -
114. 二叉树展开为链表
问题 给定一个二叉树,原地将它展开为链表。 例子 思路 方法1 先序遍历 方法2 代码 //方法1 class Solution { public void flatten(TreeNode root) { if(root==null) return ; flatten(root.left); flatten(root....原创 2020-03-17 15:37:31 · 77 阅读 · 0 评论 -
203. 移除链表元素
问题 删除链表中等于给定值 val 的所有节点。 例子 思路 两个指针,pre, now 方法1 方法2 代码 //方法1 class Solution { public ListNode removeElements(ListNode head, int val) { ListNode hhead = new ListNode(-1); ...原创 2020-03-16 11:24:35 · 157 阅读 · 0 评论 -
142. 环形链表 II
问题 例子 思路 方法1 O(n) O(n) 用map存储结点 方法2 O(n) O(1) 方法3 O(n) O(1) 快慢指针,找到相遇结点后,将问题变成->找到两个单链表相交的起始节点问题 代码 //方法1 public class Solution { public ListNode detectCycle(ListNode head) { M...原创 2020-03-10 12:17:11 · 92 阅读 · 0 评论 -
141. Linked List Cycle [环形链表]
描述 Given a linked list, determine if it has a cycle in it. To represent a cycle in the given linked list, we use an integer pos which represents the position (0-indexed) in the linked list where tail...原创 2019-10-23 20:58:02 · 142 阅读 · 0 评论