算法总结之 按照左右半区的方式重新组合单链表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法总结之 按照左右半区的方式重新组合单链表相关的知识,希望对你有一定的参考价值。
把链表右边的 拿过来以此插入到左边的链表
思路:
如果链表长度为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; } }
以上是关于算法总结之 按照左右半区的方式重新组合单链表的主要内容,如果未能解决你的问题,请参考以下文章