java 牛客網 鏈表分隔保證原來數據順序 前半段爲小於基值,後半段爲大於等於基值

題目理解: 鏈表分隔
前半段爲小於基值,後半段爲大於等於基值java

作法:新建兩個鏈表
遍歷原鏈表結點,放到對飲個的鏈表中去
合併兩個鏈表,
再將這個鏈表拷貝到原鏈表中,返回ide

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;

        }

}
相關文章
相關標籤/搜索