我的力扣演算法86-分隔連結串列
阿新 • • 發佈:2021-01-09
技術標籤:力扣演算法練習連結串列演算法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