重排連結串列

lp151397發表於2020-10-20

給定一個單連結串列 L:L0→L1→…→Ln-1→Ln ,
將其重新排列後變為: L0→Ln→L1→Ln-1→L2→Ln-2→…

你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/reorder-list
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

class Solution {
    public void reorderList(ListNode head) {
        if(head==null){
            return ;
        }
        Deque<ListNode> deque = new LinkedList<ListNode>();
        ListNode temp=head;
        while(temp.next!=null){
            deque.add(temp.next);
            temp= temp.next;
        }
        temp=head;
        boolean flag=false;
        while(!deque.isEmpty()){
            if(flag){
                temp.next=deque.pollFirst();
            }else{
                temp.next=deque.pollLast();
            }
            flag=!flag;
            temp =temp.next;
        }
        temp.next=null;
    }
}

相關文章