Home Remove Linked List Elements
Post
Cancel

Remove Linked List Elements

Leetcode Problem

Remove Linked List Elements

Linked List에서 주어진 수를 제거한 Linked List를 반환하는 문제입니다.

1
2
3
4
5
6
7
8
9
class Solution:
    def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
        node = ListNode(0, head)
        while node:
            if node.next and node.next.val == val:
                node.next = node.next.next
            else:
                node = node.next
        return head

처음에는 이렇게 풀려고 했는데, ListNode=[7,7,7,7], val=7인 경우에서 오류가 생겼습니다.
이 오류가 왜 생기는지 한참 고민했는데, 문제는 첫번째 node의 값이 val과 일치할 경우 head는 그대로 있고, node의 next만 바뀌기 때문에 head ListNode가 그대로 유지되는 것이 문제였습니다.

1
2
3
4
5
6
7
8
9
class Solution:
    def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
        node = head
        while node:
            if node.next and node.next.val == val:
                node.next = node.next.next
            else:
                node = node.next
        return head.next if head and head.val == val else head

그래서 결국 node = head로 설정한 후에 return 에서 추가 조건을 주는 식으로 해결했습니다.





참고

This post is licensed under CC BY 4.0 by the author.