题解 | #重排链表#

重排链表

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

相关推荐

今天 12:20
门头沟学院 运营
点赞 评论 收藏
分享
求offer的大角牛:不吃香菜
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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