Middle-题目109:143. Reorder List

题目原文:
Given a singly linked list L: L0→L1→…→Ln-1→Ln,
reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…
题目大意:
给出一个链表,要求按“头尾相接”的方式重排。
题目分析:
没有按照题目要求去做,先用一个数组保存下所有节点的值,再依次填上。
源码:(language:java)

public class Solution {
    public void reorderList(ListNode head) {
        List<Integer> list = new ArrayList<Integer>();
        for(ListNode node = head;node!=null;node=node.next) 
            list.add(node.val);
        int i = 0,j = list.size()-1;
        ListNode node = head;
        boolean addi = true;
        while (i <= j) {
            node.val = addi?list.get(i++):list.get(j--);
            addi=!addi;
            node=node.next;
        }
    }
}

成绩:
8ms,beats 3.74%,众数3ms,51.93%
cmershen的碎碎念:
如果此题改用LinkedList,会超时。

你可能感兴趣的:(Middle-题目109:143. Reorder List)