반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
[LeetCode] 86 | Partition List | Python 본문
728x90
반응형
문제 링크: https://leetcode.com/problems/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 nodes in each of the two partitions.
Example 1:
조건
- The number of nodes in the list is in the range [0, 200].
- -100 <= Node.val <= 100
- -200 <= x <= 200
내 풀이
x보다 작은 값들을 모을 smaller 리스트, 그렇지 않은 값들을 모을 bigger 리스트를 모은다.
나중에 smaller를 리턴해야하는데, smaller.next로 가면 smaller의 시작점을 찾기 어려우므로 이를 대신할 s=smaller를 이용한다.
List를 앞에서부터 차례로 보며 그 크기가 x보다 작으면 smaller에 추가하고, 그렇지 않으면 bigger에 추가한다.
smaller 뒤에 bigger를 붙이고 리턴한다.
bigger.next를 붙이는 이유는 처음에 bigger를 만들 때 dummy value인 0으로 만들었고, 그 뒤의 값부터 유효하기 때문이다.
이와 같은 이유도 리턴할 때 smaller.next를 리턴한다.
코드
# 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]:
if not head: return head
smaller, bigger = ListNode(0), ListNode(0)
s, b = smaller, bigger
if head.val < x:
s.next = ListNode(head.val)
s = s.next
else:
b.next = ListNode(head.val)
b = b.next
while head.next:
head = head.next
if head.val < x:
s.next = ListNode(head.val)
s = s.next
else:
b.next = ListNode(head.val)
b = b.next
s.next = bigger.next
return smaller.next
728x90
반응형
'스터디 > 코테' 카테고리의 다른 글
[LeetCode] 236 | Lowest Common Ancestor of a Binary Tree | Python (0) | 2022.07.26 |
---|---|
[LeetCode] 34 | Find First and Last Position of Element in Sorted Array | Python (0) | 2022.07.25 |
[LeetCode] 118 | Pascal's Trigangle | Python (0) | 2022.07.19 |
[LeetCode] 695 | Max Area of Island | Python (0) | 2022.07.15 |
[LeetCode] 105 | Construct Binary Tree from Preorder and Inorder Traversal | Python (0) | 2022.07.14 |
Comments