题解 | #重排链表#

重排链表

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;
    }
}

全部评论

相关推荐

04-08 23:37
已编辑
东华大学 结构工程师
点赞 评论 收藏
分享
04-03 09:32
已编辑
华南农业大学 golang
我的代码出BUG了:"晚点发个邮件调整一下时间",你收到新的邮件没,如果没有收到新的邮件,那就需要进入面试链接留痕,否则系统会判定你迟到
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务