본문 바로가기

PS/릿코드

[릿코드 86] Partition List (파이썬/python)

728x90

https://leetcode.com/problems/partition-list/description/

 

Partition List - LeetCode

Can you solve this real interview question? Partition List - Given the head of a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the original relative order of the no

leetcode.com

 

좌표보다 작은 값의 연결리스트와 같거나 큰 값의 연결리스트를 따로 뽑아준 후

나중에 합쳐주면 되는 문제

 

class Solution:
    def partition(self, head: Optional[ListNode], x: int) -> Optional[ListNode]:
        # 파라미터 체크
        if head is None:
            return head
        # x보다 작은값 리스트, 같거나 큰 값 리스트 의 시작점을 가지고있는다
        less_than_x = ListNode(0)
        equal_or_bigger_than_x = ListNode(0)

        # 동적으로 제일 마지막 노드를 가지고있는 변수
        l, e = less_than_x, equal_or_bigger_than_x

        if head.val < x:
            l.next = ListNode(head.val)
            l = l.next
        else:
            e.next = ListNode(head.val)
            e = e.next

        while head.next:
            head = head.next
            if head.val < x:
                l.next = ListNode(head.val)
                l = l.next
            else:
                e.next = ListNode(head.val)
                e = e.next
                
        l.next = equal_or_bigger_than_x.next
        return less_than_x.next
728x90