Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
問題文: https://leetcode.com/problems/remove-duplicates-from-sorted-list/description/

# step1: 何も見ないで書く
- 2重ループを使った方法で書いた。
- 時間計算量O(n): ループがノード全体を走るから。
- 空間計算量O(1): 何個ノードがあっても必要な変数は2つ。
- 問題文に記載はなかったがノードの値はおそらくint型なので値の比較は == で行った。
- 重複チェックの対象になるノードをforwardという変数に格納しようかとも思ったが、読みやすさは変わらなそうなのでやめた。
```python
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:
node = head
while node is not None:
while node.next is not None and node.val == node.next.val:
node.next = node.next.next
node = node.next
return head

```

# step2: 他の人を参考にコードを整える
- 2重ループではなく、ループと if elseを組み合わせた方法もあったが、あまり直観的な方法ではない感じがしたので採用しなかった。
```python
class Solution:
def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:
node = head
while node is not None:
while node.next is not None and node.val == node.next.val:
node.next = node.next.next
node = node.next
return head

```

# step3: 10分以内に3回ミスなく書く

```python
class Solution:
def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:
node = head
while node is not None:
while node.next is not None and node.next.val == node.val:
node.next = node.next.next
node = node.next
return head

```