题解 | #重排链表#

重排链表

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

找到中间点,分割前后两段A、B,B进行翻转,再合并AB
时间复杂度:O(n),空间复杂度:O(1)

关于如何找中点的通用公式可以看我这篇的题解
/**
 * 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&&head.next!=null){
        ListNode slow = head;
        ListNode fast = head.next;
        while(fast!=null&&fast.next!=null){
            fast =fast.next.next;
            slow = slow.next;
        }
        //找到后一段的起点
        ListNode slowNext = slow.next;
        //断开前一段与后一段的关联
        slow.next = null;
        //反转后一段
        ListNode reverseNode = reverse(slowNext);
        //合并前一段和后一段
        count(head,reverseNode);
        }
        
    }
    public ListNode reverse(ListNode node){
        ListNode pre = null;
        while(node!=null){
            ListNode temp = node.next;
            node.next = pre;
            pre = node;
            node = temp;
        }
        return pre;
    }
    
    public ListNode count(ListNode node1,ListNode node2){
        ListNode numpy = new ListNode(-1);
        ListNode copyNumpy = numpy;
        int sum = 1;
        while(node1!=null&&node2!=null){
            if(sum%2!=0){
                copyNumpy.next = node1;
                node1=node1.next;
            }
            else{
                copyNumpy.next = node2;
                node2=node2.next;
            }
            copyNumpy=copyNumpy.next;
            sum++;
        }
        copyNumpy.next=(node1==null? node2:node1);
        return numpy.next;
    }
}


全部评论

相关推荐

04-02 14:40
浙江大学 设计
无语😓 就喜欢找我茬,研究生怎么了 研究生就是天才吗 就得所有报告文件都会,最烦做表
我推的MK:是这样的,那些领导就是自己什么都不懂就把所有东西扔给你,指望白嫖你的劳动力,如果你的表现不如预期就启动攻击学历模式,这都学不会是怎么考上浙大的
点赞 评论 收藏
分享
牛客245670684号:虚拟货币预测正确率百分之99,还要找工作干嘛,不早就财富自由了
点赞 评论 收藏
分享
头像
02-26 13:58
门头沟学院 Java
北城_阿亮:把八股背一背,包装一下实习经历项目经历,要是有心思考证就考一考,然后把别人的项目爬到自己github上,包装到简历里,什么三个月?一个月!
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务