题解 | #重排链表#

重排链表

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);
        }
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
05-25 18:29
点赞 评论 收藏
分享
07-02 22:46
门头沟学院 Java
码农索隆:hr:“管你投没投,先挂了再说”
点赞 评论 收藏
分享
不对是145个人…嗯…&nbsp;大家都没发现秋招提前批来了嘛..笑死我了
牛客39712426...:投了也是浪费时间,之前投米实习,除了浪费我时间写笔试题没有任何反馈,懒得投了
26届校招投递进展
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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