把链表右边的 拿过来以此插入到左边的链表
思路:
如果链表长度为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; } }
时间: 2024-12-17 17:29:11