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