题解 | #重排链表#

重排链表

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

import java.util.*;
public class Solution {
    public void reorderList(ListNode head) {
        if(head == null) return;

        List<ListNode> list = new ArrayList<>();
        ListNode p = head, q = head.next;
        //1.将所有链表节点放入list中
        while(p != null){
            list.add(p);
            p.next = null;
            p = q;
            if(q != null)
                q = p.next;
        }
        //2.左右双指针,交错往中间靠近然后成链
        int l = 0, r = list.size()-1;
        while(l < r){
            if(l < r) list.get(l ++).next = list.get(r);
            if(l < r) list.get(r --).next = list.get(l);
        }
    }
}
全部评论

相关推荐

大野鸡:其实就是量,但是时间有限,1000题只要不是全中等简单,简单中等困难1-2-1,大概能打打比赛了(前20%),10000题就是下一个灵神
点赞 评论 收藏
分享
敢逐云霄志:你打招呼语怎么能这么长,hr都没看下去的欲望,简明扼要说重点,就读于某某学校某某专业,26届应届毕业生,学信网可查,先后在某某公司实习过(如有),然后做过什么项目,想找一份什么样的工作,可实习几个月以上,期待您的回复。
点赞 评论 收藏
分享
今天 15:09
武汉大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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