Given a singly linked list L: L 0→L 1→…→L n-1→L n,
reorder it to: L 0→L n →L 1→L n-1→L 2→L n-2→…
You must do this in-place without altering the nodes’ values.
For example,
Given{1,2,3,4}, reorder it to{1,4,2,3}.
简单暴力
public class l143_reorder_list {
class ListNode{
int val;
ListNode next;
ListNode(int x){
val=x;
next=null;
}
}
public void reorderList(ListNode head) {
ListNode rear = head;
ListNode temp;
while (head != null && head.next != null) {
while (rear.next.next != null) {
rear = rear.next;
}
temp = rear.next;//链表尾节点
rear.next = null;//断开尾节点
//插入到链表前面
temp.next = head.next;
head.next = temp;
rear = head = temp.next;//进行下一步
}
}
}