[LeetCode] 83. Remove Duplicates from Sorted List_Easy tag: Linked List
2019-04-30 10:35 Johnson_强生仔仔 阅读(211) 评论(0) 编辑 收藏 举报Given a sorted linked list, delete all duplicates such that each element appear only once.
Example 1:
Input: 1->1->2 Output: 1->2
Example 2:
Input: 1->1->2->3->3 Output: 1->2->3
COde
# 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: ListNode) -> ListNode: dummy = head while head and head.next: if head.val == head.next.val: head.next = head.next.next else: head = head.next return dummy
利用dummy来记住head,pre去记录上一个node,将head 和pre 比较(如果pre存在的话), 一旦相等,则删除掉head该点。注意,那个点实际上还是在,但是根据python的回收机制,没有指针指向该点,会被回收掉。
(也可以像code中那样,将head.next = None)
Code
class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: def removeDup(self, head): dummy, pre = head, None while head: if pre and head.val == pre.val: pre.next = head.next
head.next = None else:
pre = head head = pre.next return dummy