leecode分割鍊錶

2021-09-27 03:49:09 字數 865 閱讀 6620

給定乙個鍊錶和乙個特定值 x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。

你應當保留兩個分割槽中每個節點的初始相對位置。

示例:輸入: head = 1->4->3->2->5->2, x = 3

輸出: 1->2->2->4->3->5

解題思路:該題相當於乙個分類問題,基於給定引數x分大和小。基於示例解題過程如下:

大領頭羊(bighead)舉牌:羊年齡大於等於x跟我走

小領頭羊(smallhead)舉牌:羊年齡小於x跟我來

x = 3

羊佇列:head = 1->4->3->2->5->2 

羊群開始找頭領.... 

1 < x smallhead = 1

4 >=x bighead = 4

3 >=x bighead = 4->3

2 < x smallhead = 1->2

5 >=x bighead = 4->3->5

2 < x smallhead = 1->2->2

最後:小領頭羊接上大領頭羊

smallhead  = 1->2->2->4->3->5

**:

listnode* partition(listnode* head, int x)

else

pcur = pcur->next;

} pbigcur->next = null;

psmallcur->next = pbighead.next;

return psmallhead.next;

}

Leecode回文鍊錶

貼 class solution string ss s reverse s.begin s.end if ss s return 1 return 0 我自己的思路比較無腦,就是讀出來轉成string反轉比較。然後看到乙個用棧來做的 之前也有想到,但是感覺對於121這種有些麻煩。class sol...

反轉鍊錶(Leecode 206 92)

206 題目反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null解析 這題比較簡單,使用迭代反轉或者遞迴反轉都可以,這裡使用迭代反 使用pre cur next這三個指標分別儲存head結點的前乙個結點,cur儲存head結點 next儲存head結點的下乙個...

鍊錶分割問題

題目 編寫 以給定的x為基準值將鍊錶分割成兩部分,所有小於x的結點排在大於或等於x的結點之前。解法一 交換結點法,回想學習快速排序的時候,也是以基準值將一組數劃分成兩部分,小於基準值的排在前面,大於基準值的排在後半部分。因此解決這個問題也可以使用兩個指標。如果煉表頭結點開始遍歷,第乙個需要移動的結點...