题解 | #链表分割#

链表分割

https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70

import java.util.*;

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Partition {
    public ListNode partition(ListNode pHead, int x) {
        //比x小,bs and he为前链表的头和尾
       ListNode bs=null;
       ListNode be=null;
       //比x大, as and ae...
       ListNode as=null;
       ListNode ae=null;
       //定义新的头,防止phead指针移动,影响其他使用操作
       ListNode head=pHead;
       //遍历链表
       while(head!=null){
        //比x小,存前链表中
        if(head.val<x){
            if(bs==null){
                bs=be=head;
                head=head.next;
            }else{
                be.next=head;
                be=be.next;
                head=head.next;
            }
        }else{      //比X大
            if(as==null){
                as=ae=head;
                head=head.next;
            }else{
                ae.next=head;
                ae=ae.next;
                head=head.next;
            }
        }
       }
       //bs=null,前链表为空
        if(bs==null){
            return as;
        }
        //as=null,后链表为空,走到这里,前链表不可能为空
        if(as==null){
            be.next=as;//最后节点next置空
            return bs;
        }
        //走到这里,前后链表都不为空,连接两个链表尾头,这里后链表的尾可能不为空,进行判断!!!
        if(ae.next!=null){
            ae.next=null;
        }
        be.next=as;
        return bs;
    }
}

#小厂也是厂,三千我也干#
全部评论

相关推荐

不亏是提前批,神仙打架,鼠鼠不配了
站队站对牛:现在92都报工艺岗了
投递韶音科技等公司7个岗位
点赞 评论 收藏
分享
07-11 10:56
门头沟学院 Java
码客明:大胆的说自己能实习6个月就行
点赞 评论 收藏
分享
06-26 22:20
门头沟学院 Java
码农索隆:让你把简历发给她,她说一些套话,然后让你加一个人,说这个人给你改简历,然后开始卖课
我的求职精神状态
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
码农索隆:有点耳熟,你们是我教过最差的一届
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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