题解 | #重排链表#

重排链表

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

全部评论

相关推荐

华为终究还是没走到最后,倒在了主管面,不甘心,不甘心啊
想去重庆的鸽子在吐槽:不用硬顶着17级台风上班了
点赞 评论 收藏
分享
09-13 08:41
服装/纺织设计
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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