码迷,mamicode.com
首页 > 其他好文 > 详细

143. 重排链表

时间:2019-05-10 11:21:42      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:efi   交换   import   node   class   linked   题目   ==   queue   

题目描述

给定一个单链表 LL0→L1→…→Ln-1→Ln ,
将其重新排列后变为:
L0→L
n
L1→Ln-1→L2→Ln-2→…

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例 1:

给定链表 1->2->3->4, 重新排列为 1->4->2->3.

示例 2:

给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.

分析

使用双向链表queue来存该单链表,再迭代一遍,如果当前指针cur是空的,则赋值双向链表前面的值,否则cur的next指针赋值最前面的值。

贴出代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
import java.util.LinkedList;
class Solution {
    public void reorderList(ListNode head) {
        LinkedList<ListNode> queue = new LinkedList<>();
        ListNode cur = head;
        while(cur != null){
            queue.addLast(cur);
            cur = cur.next;
        }
        while(!queue.isEmpty()){
            if(cur == null){
                cur = queue.pollFirst();
            }else{
                cur.next = queue.pollFirst();
                cur = cur.next;
            }
            cur.next = queue.pollLast();
            cur = cur.next;
        }
        if(cur != null){
            cur.next = null;
        }
    }
}

143. 重排链表

标签:efi   交换   import   node   class   linked   题目   ==   queue   

原文地址:https://www.cnblogs.com/Tu9oh0st/p/10843162.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!