Remove Duplicates from Sorted List II
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
Example
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.
Solution
循环删除重复节点:
while head.next != None and val == head.next.val:
head.next = head.next.next
删除重复节点的前提是排序过的链表,如果没有排序,使用Hashtable,如果把重复的留一个,不需要使用Dummy 否则使用。
"""
Definition of ListNode
class ListNode(object):
def __init__(self, val, next=None):
self.val = val
self.next = next
"""
class Solution:
"""
@param head: A ListNode
@return: A ListNode
"""
def deleteDuplicates(self, head):
if head == None or head.next == None:
return head
dummy = ListNode(0)
dummy.next = head
head = dummy
while head.next and head.next.next:
if head.next.val == head.next.next.val:
val = head.next.val
while head.next and head.next.val == val:
head.next = head.next.next
else:
head = head.next
return dummy.next
Last updated
Was this helpful?