# LeetCode Easy 203. Remove Linked List Elements
tags: leetcode
問題
アイデア
「val
という値を連結リストから取り除け」という問題です.
やるだけです.
解法
- 先頭から
val
と同じ値を持つノードを取り除きます. - 問題の連結リストは単方向連結リストなので,
node1->node2->node3->...
と繋がっている際に,node1
を削除するにはその前のノードが必要です. - そのため,ダミーのヘッドを作り,その先頭を指す変数
cur_node
を作ります. cur_node
の次のノードの値がval
と同じならば,cur_node
を次の次のノードに繋ぎます.- これによって,
val
と同じ値を持つノードを取り除くことが出来ます.
- これによって,
計算量
リストの大きさを$N$とする.
- 時間計算量
- $O(N)$
- 空間計算量
- $O(1)$
Python
# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def removeElements(self, head: ListNode, val: int) -> ListNode: dummy_head = ListNode(0) dummy_head.next = head cur_node = dummy_head while cur_node.next: if cur_node.next.val == val: cur_node.next = cur_node.next.next else: cur_node = cur_node.next return dummy_head.next