当前位置:   article > 正文

LeetCode-143. Reorder List

leetcode 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.
public void reorderList(ListNode head) {
        if(head==null){
            return ;
        }
        //找到中点
        ListNode fast = head;
        ListNode slow = head;
        while(slow !=null &&fast!= null && fast.next!=null){
            slow = slow.next;
            fast = fast.next.next;
        }
        ListNode mid = slow.next;
        slow.next = null;
        //反转链表
        ListNode newHead = null;//反转链表头结点
        ListNode cur = mid ;
        while(cur!=null){
            ListNode temp = cur.next;
            cur.next = newHead;
            newHead = cur;  
            cur = temp;
        }
        //reorder
        cur = head;
        while(cur!=null&& newHead !=null){
            ListNode temp = newHead.next;
            newHead.next = cur.next;
            cur.next = newHead;
            cur=cur.next.next;
            newHead=temp;
        }
    
    }

 

转载于:https://www.cnblogs.com/zhacai/p/11154166.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/658231
推荐阅读
相关标签
  

闽ICP备14008679号