题目描述:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。e.g. 输入1-> 1 -> 2 -> 3 -> 3 输出:1->2->3
思路:
与删除数组中的重复元素不同,数组是有下标的,且删除数组中的元素可以用后面的元素覆盖前面的元素。
在链表中需要借助指针来实现。
第一种思路,构造一个新链表
class Solution: def deleteDuplicates(self, head: ListNode) -> ListNode: if head == None or head.next == None: return head d_head,d_head.next = ListNode(0),head #将d_head看作是一个有头节点的链表,且链表的第一个元素指向head while (head != None and head.next != None): #对head进行操作 if(head.val==head.next.val): head.next = head.next.next else: head = head.next return d_head.next
第二种思路,使用cur指针指向头部head
class Solution: def deleteDuplicates(self, head: ListNode) -> ListNode: cur = head while(cur != None and cur.next != None): if cur.val == cur.next.val: cur.next = cur.next.next else: cur = cur.next return head