力扣 leetcode 86. 分隔連結串列
Topic:
給你一個連結串列和一個特定值 x ,請你對連結串列進行分隔,使得所有小於 x 的節點都出現在大於或等於 x 的節點之前。
你應當保留兩個分割槽中每個節點的初始相對位置。
Example:
輸入:head = 1->4->3->2->5->2, x = 3
輸出:1->2->2->4->3->5
思路:
整體的思路就是將連結串列按原序拆分為小的和大的兩個連結串列,最後合併
首先先設定兩個啞節點(便於邊界的判斷)
之後遍歷整個連結串列
若head的val小於x,則small的下一位變為head
small指標轉換為下一位(此時head的val)
同理
若head的val大於或等於於x,則big的下一位變為head
big指標指向下一位(此時head的val)
這樣兩個連結串列已經按照原來的順序
分別將小的儲存為了small
大的儲存為了big
遍歷結束後
將 big 的 next 指標清空(防止指向原來初始連結串列的節點)
同時將 small 的 next 指向L2的next 的節點(big連結串列真正的頭節點)
最後返回L1的next指標
Code:
class Solution:
def partition(self, head: ListNode, x: int) -> ListNode:
L1 = small = ListNode(0)
L2 = big = ListNode(0)
while head:
if head.val < x:
small.next = head
small = small.next
else:
big.next = head
big = big.next
head = head.next
big.next = None
small.next = L2.next
return L1.next
Result:
相關文章
- LeetCode 86. 分隔連結串列LeetCode
- 86. 分隔連結串列(Java)Java
- 力扣(LeetCode) -143 重排連結串列力扣LeetCode
- LeetCode 86 ——分隔連結串列LeetCode
- 【1月打卡~Leetcode每日一題】86. 分隔連結串列(難度:中等)LeetCode每日一題
- LeetCode-Python-86. 分隔連結串列(連結串列)LeetCodePython
- 力扣--連結串列演算法力扣演算法
- Go資料結構與力扣—連結串列Go資料結構力扣
- 力扣-203. 移除連結串列元素力扣
- TODO-力扣-707. 設計連結串列力扣
- [Golang]力扣LeetBook—初級演算法—連結串列—迴文連結串列(快慢指標)Golang力扣演算法指標
- 力扣 147. 對連結串列進行插入排序力扣排序
- 力扣學習筆記:142. 環形連結串列 II力扣筆記
- 力扣-83. 刪除排序連結串列中的重複元素力扣排序
- Leetcode_86_分割連結串列_連結串列LeetCode
- 【LeetCode】->連結串列->通向連結串列自由之路LeetCode
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- LeetCode-連結串列LeetCode
- 力扣(LeetCode)863力扣LeetCode
- 力扣(LeetCode)389力扣LeetCode
- 力扣(LeetCode)796力扣LeetCode
- 力扣(LeetCode)934力扣LeetCode
- 力扣(LeetCode)543力扣LeetCode
- 力扣(LeetCode)513力扣LeetCode
- 力扣(LeetCode)965力扣LeetCode
- LeetCode連結串列專題LeetCode
- leetcode 反轉連結串列LeetCode
- 力扣(LeetCode)103力扣LeetCode
- 力扣(LeetCode)130力扣LeetCode
- [連結串列]leetcode138-複製帶隨即指標的連結串列LeetCode指標
- 【LeetCode連結串列#9】圖解:兩兩交換連結串列節點LeetCode圖解
- leetcode 92 反轉連結串列ⅡLeetCode
- leetcode:21. 合併兩個有序連結串列(連結串列,簡單)LeetCode
- 力扣(LeetCode)310力扣LeetCode
- 連結串列-雙向連結串列
- 連結串列-迴圈連結串列
- leetcode題目解析(js)--連結串列LeetCodeJS
- LeetCode入門指南 之 連結串列LeetCode