diff --git a/83.Remove_Duplicates_from_Sorted_List.md b/83.Remove_Duplicates_from_Sorted_List.md new file mode 100644 index 0000000..66bf6cd --- /dev/null +++ b/83.Remove_Duplicates_from_Sorted_List.md @@ -0,0 +1,80 @@ +1st. +simpleに次を見ていき今と同じなら次のnodeは飛ばす。違うなら飛ばさないという処理をするだけという方針。 +```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 and node.next: + if node.val == node.next.val: + node.next = node.next.next + else: + node = node.next + return head +``` + +2nd. +(https://discord.com/channels/1084280443945353267/1195700948786491403/1196399353116499970)この回答が分かりやすいと感じた。 +```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: + while node.next and node.val == node.next.val: + node.next = node.next.next + node = node.next + + return head +``` + +他のかたの解答もみたが、if-elseではなくcontinueを使う方法もあるよう(https://github.com/ichika0615/arai60/pull/3) +確かにこちらの方が同じ数字の場合飛ばし続ける的なニュアンスが読みとれる気がする +```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 and node.next: + if node.val == node.next.val: + node.next = node.next.next + continue + node = node.next + + return head +``` + +3rd. +書きやすいと感じた以下のコードを繰り返し書いた +```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: + if node.next and node.val == node.next.val: + node.next = node.next.next + continue + node = node.next + return head +``` \ No newline at end of file