天天看點

【LeetCode】 86. 分隔連結清單

1. 題目

2. 分析

3. 代碼

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def partition(self, head: Optional[ListNode], x: int) -> Optional[ListNode]:
        hl = None # head of less
        hm= None # head of more
        prehl = None
        headHm = None
        headHl = None
        # 不停地周遊head 節點,然後不停地配置設定給hl / hm
        while(head):
            tmp = head.next 
            if head.val >= x:
                if hm :
                    hm.next = head
                    hm = hm.next
                else:                    
                    hm = head
                    headHm = hm
                hm.next = None
            else:
                if hl:
                    hl.next = head                    
                    hl = hl.next
                else:
                    hl = head
                    headHl = head
                hl.next = None
            head = tmp
        # return headHm
        if hl:
            hl.next = headHm
        else:
            return headHm
        return