java 牛客网 链表分隔保证原来数据顺序 前半段为小于基值,后半段为大于等于基值

题目理解: 链表分隔
前半段为小于基值,后半段为大于等于基值

做法:新建两个链表
遍历原链表结点,放到对饮个的链表中去
合并两个链表,
再将这个链表拷贝到原链表中,返回

import java.util.LinkedList;

public class Partition {

 class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}

    //新建链表L1  L2   挂在一起  放到原链表
        public ListNode partition(ListNode pHead, int x) {
LinkedList <Integer>  L1=new LinkedList<>();
LinkedList <Integer>  L2=new LinkedList<>();

            ListNode cur=pHead;//头指针

            while(cur!=null){
                if(cur.val<x){
                  L1.add(cur.val);//cur一进来就放
                }
                else{
                    L2.add(cur.val);
                }
                cur=cur.next;

            }

     L1.addAll(L2);
            //L1bianle

           pHead.val=L1.get(0);
            cur=pHead.next;
            for(int i=1;i< L1.size();i++){
              cur.val=  L1.get(i);
              cur=cur.next;
            }//把值放进原 链表

            return   pHead;

        }

}

猜你喜欢

转载自blog.51cto.com/14232658/2455134