Leetcode 83. Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once.
Example 1:
Input: 1->1->2 Output: 1->2Example 2:
Input: 1->1->2->3->3 Output: 1->2->3
思路
简单题,思路是一个一个往下迭代找下一个与父亲节点value不同的节点。
需要注意的是可能会碰到结尾有好几个相同value的节点,此处我加入了一个无穷大的尾节点确认已经结束,同时返回整个链表。
代码如下:
class Solution(object):
def deleteDuplicates(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if head == None:
return head
k = float("inf")
endNode = ListNode(k)
findEndcur = head
while(findEndcur.next != None):
findEndcur = findEndcur.next
findEndcur.next = endNode
curPar = head
cur = head.next
parentVal = head.val
while cur != None:
if(parentVal == cur.val):
cur = cur.next
continue
if(cur.val == float("inf")):
curPar.next = None
break
curPar.next = cur
parentVal = cur.val
curPar = cur
cur = cur.next
return head
时间复杂度beat88%+ 为 O(n)