143. Reorder List(js)

Posted xingguozhiming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.
题意:对链表重新排列,倒数第i个节点接在第i个节点之后
代码如下:
/**
 * 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;
    
;

 

以上是关于143. Reorder List(js)的主要内容,如果未能解决你的问题,请参考以下文章

143. Reorder List

143. Reorder List

143. Reorder List

leetcode 143. Reorder List

143. Reorder List

143. Reorder List