标签:一个 左右 复杂度 pack 插入 oid 时间复杂度 nod 复杂
把链表右边的 拿过来以此插入到左边的链表
思路:
如果链表长度为N,直接给出时间复杂度为O(N) 额外空间复杂度为O(1)的方法
1 如果链表为空,或者长度为1 不调整
2 链表长度大于1时, 遍历一便找到左半区最后一个节点 记为mid
package TT; public class Test115 { public class Node{ public int value; public Node next; public Node(int data){ this.value=data; } } public void relocate(Node head){ if(head==null || head.next==null){ return; } Node mid = head; Node right = head.next; while(right.next!=null && right.next.next !=null){ mid=mid.next; right=right.next.next; } right=mid.next; mid.next=null; mergeLR(head, right); } public void mergeLR(Node left, Node right){ Node next = null; while(left.next!=null){ next=right.next; right.next=left.next; left.next=right; left=right.next; right=next; } left.next=right; } }
标签:一个 左右 复杂度 pack 插入 oid 时间复杂度 nod 复杂
原文地址:http://www.cnblogs.com/toov5/p/7506709.html