143. 重排链表

>> 饿了么、美团外卖红包领取地址<<

题目:https://leetcode-cn.com/problems/reorder-list/

代码:

class Solution {

    public void reorderList(ListNode head) {
        if (head == null) {
            return;
        }
        List<ListNode> list = new ArrayList<>();
        //链表转成list存储
        ListNode node = head;
        while (node != null) {
            list.add(node);
            node = node.next;
        }
        //重排
        int size = list.size();
        for (int i = 0; i < size / 2; i++) {
            ListNode node1 = list.get(i);
            ListNode node2 = list.get(size - 1 - i);
            node2.next = node1.next;
            node1.next = node2;
        }
        //处理尾部,防止循环指针
        list.get(size / 2).next = null;
    }

}

因为题目需要重排链表,且排列规则跟下标有关,而链表是没有下标属性的。为了解决这个问题,我们可以将链表转化成list,之后根据题目要求重排即可。

注意:需要处理结尾节点的next值为null,否则会造成循环指针。


觉得内容还不错?打赏个钢镚鼓励鼓励!!👍

维特丝(vetes)泡沫发蜡喷雾干胶定型弹力素羊毛卷男女保湿蓬松发胶 泡沫发蜡450ml+旅行装99ml
¥34.00
维特丝(vetes)一梳黑染发剂染发梳植物潮色显白遮盖白发自然清水纯黑发焗油男女梳炫彩 自然黑LW00
¥49.00
维特丝(vetes)染发笔遮白补染快速染发天然植物一次性染发棒 一次性染发棒黑色
¥46.00
维特丝 护发精油防毛躁清香玫瑰奇焕亮发干枯烫发卷发直发头发润发护发素男女士 滋养柔顺护发精油100ml
¥36.00