题解 | #重排链表#

重排链表

https://www.nowcoder.com/practice/3d281dc0b3704347846a110bf561ef6b

import java.util.*;
/**
 * Definition for singly-linked list.
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public void reorderList(ListNode head) {
        if (head == null) {
            return;
        }
        ListNode pNode = new ListNode(0);
        pNode.next = head;

        List<ListNode> list = new ArrayList<>();
        while (pNode.next != null) {
            pNode = pNode.next;
            list.add(pNode);
        }

        List<ListNode> list1 = new ArrayList<>(list.size());
        for (int i = 0; i < list.size(); i ++) {
            if (i == 0) {
                list1.add(list.get(i));
                continue;
            }
            if (i % 2 == 0) {
                list1.add(list.get(i / 2));
            } else {
                list1.add(list.get(list.size() - 1 - i / 2));
            }
        }

        for (int i = 0; i < list1.size() - 1; i ++) {
            list1.get(i).next = list1.get(i + 1);
        }
        list1.get(list.size() - 1).next = null;
    }
}

全部评论

相关推荐

AaronRuan:看到了好多开奖了,不知道为啥自己也有点激动,真的替你们感到高兴啊
投递华为等公司10个岗位
点赞 评论 收藏
分享
11-08 13:58
门头沟学院 Java
程序员小白条:竟然是蓝桥杯人才doge,还要花钱申领的offer,这么好的公司哪里去找
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务