Python实现"删除排序链表中的重复元素"的两种方法
给定一个有序链表,删除重复元素,保证每一个元素只出现一次
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
算法题来自: