1. 程式人生 > 其它 >我的力扣演算法86-分隔連結串列

我的力扣演算法86-分隔連結串列

技術標籤:力扣演算法練習連結串列演算法leetcodec++

ok
放了幾天假,哈哈。
看題:
給你一個連結串列和一個特定值 x ,請你對連結串列進行分隔,使得所有小於 x 的節點都出現在大於或等於 x 的節點之前。
你應當保留兩個分割槽中每個節點的初始相對位置。

在這裡插入圖片描述
就是,兩個引數,一個連結串列,一個比較值,連結串列中的比比較值小的,要在比比較值大之前出現,且保證之前的相關順序不變。
程式碼:

class Solution {
public:
    ListNode* partition(ListNode* head, int x) {
        ListNode* s = new
ListNode(0);//一個記錄小值的連結串列 ListNode* sh = s; ListNode* b = new ListNode(0);//一個記錄大值的連結串列 ListNode* bh = b; while(head != NULL){//只要給出的連結串列還有值 if(head->val<x){//如果此時的值小於比較值 s->next=head;//那麼記錄小值的連結串列就獲得它 s=s->next;//指向下一個 }
else{//反而這邊記錄i大值 b->next=head; b=b->next; } head=head->next;//指向下一個 } b->next=NULL;//給大值加個尾巴 s->next=bh->next;//連結串列拼接 return sh->next;//返回連結串列 } };

ok