Problem
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
Example 1:
Input: 1->2->3->3->4->4->5
Output: 1->2->5
Example 2:
Input: 1->1->1->2->3
Output: 2->3
解题思路
这一题的总体思路就是从头开始遍历,遇见相同的删除就好。
代码如下:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
H = ListNode(- float("inf"))
H.next = head
tail = H
while head:
if head.next and head.val == head.next.val:
current = head.val
while head and head.val == current:
tail.next = head.next
head = head.next
else:
tail = head
head = head.next
return H.next