143. Reorder List(js)

143. Reorder List

Given a singly linked list LL0→L1→…→Ln-1→Ln,
reorder it to: L0→LnL1→Ln-1→L2→Ln-2→…

You may not modify the values in the list's nodes, only nodes itself may be changed.

Example 1:

Given 1->2->3->4, reorder it to 1->4->2->3.

Example 2:

Given 1-> 2-> 3-> 4- > 5, reorder it to 1-> 5-> 2-> 4-> 3. 
Meaning of problems: on the rearranged list, then the penultimate node i in the i-th after the node
code is as follows:
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {void} Do not return anything, modify head in-place instead.
 */
var reorderList = function(head) {
    if(!head || !head.next || !head.next.next) return;
    let slow=head,fast=head;
    while(fast.next && fast.next.next){
        slow=slow.next;
        fast=fast.next.next;
    }
    let mid=slow.next;
    slow.next=null;
    let last=mid,pre=null;
    while(last){
        let next=last.next;
        last.next=pre;
        pre=last;
        last=next;
    }
    while(head && pre){
        let next=head.next;
        head.next=pre;
        pre=pre.next;
        head.next.next=next;
        head=next;
    }
};

 

Guess you like

Origin www.cnblogs.com/xingguozhiming/p/11028965.html