给定一个有序链表,删除重复元素,保证每一个元素只出现一次
Example 1:
Input: 1->1->2
Output: 1->2
Example 2:
Input: 1->1->2->3->3
Output: 1->2->3
1:时间复杂度O(n),借助另外一个链表
def deleteDuplicates(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head:
return None
head_list = ListNode(0) #头指针,不动
cur_List = head_list #当前指针
cur_List.next = ListNode(head.val) #指针移动
cur_List = cur_List.next
head = head.next #head链表移动
while head: #遍历head链表
if head.val != cur_List.val:
cur_List.next = ListNode(head.val)
cur_List = cur_List.next
head = head.next
return head_list.next
2:时间复杂度O(n),不借助另外链表
def deleteDuplicates(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head:
return None
cur_List = head
while cur_List.next:
if cur_List.val == cur_List.next.val:
cur_List.next = cur_List.next.next
else:
cur_List = cur_List.next
return head
算法题来自:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/description/