首页 > 其他 > 详细

reorder-list

时间:2020-06-02 10:45:29      阅读:29      评论:0      收藏:0      [点我收藏+]

代码:

package com.niuke.p8;
/**
 * reorder-list
 * @author Administrator
 *
 */
public class Solution {
    public void reorderList(ListNode head) {
        if(head == null || head.next == null) {
            return;
        }
        
        //快慢指针
        ListNode fast = head;
        ListNode slow = head;
        while(fast.next != null && fast.next.next != null) {
            fast = fast.next.next;
            slow = slow.next;
        }
        
        //拆分链表,并且反转中间节点之后的链表
        ListNode after = slow.next;
        slow.next = null;
        ListNode pre = null;
        while(after != null) {
            ListNode temp = after.next;
            after.next = pre;
            pre = after;
            after = temp;
        }
        //两个链表合并
        ListNode first = head;
        after = pre;
        while(first != null && after != null) {
            ListNode ftemp = first.next;
            ListNode aftemp = after.next;
            first.next =  after;
            first = ftemp;
            after.next = first;
            after = aftemp;
        }
    }

}

 

reorder-list

原文:https://www.cnblogs.com/LoganChen/p/13028972.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!