Leetcode -- 删除排序链表中的重复元素(83)
题目描述:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。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

浙公网安备 33010602011771号