LeetCode 83. 删除排序链表中的重复元素
题目:
给定一个已排序的链表的头 head,删除所有重复的元素,使每个元素只出现一次 。返回已排序的链表 。
链接 https://leetcode.cn/problems/remove-duplicates-from-sorted-list/
个人思路
- 虽然学过数据结构,但基本全忘了,刚开始是想新建一个链表头来存储要返回的链表的,然后写出了下面的代码
# 艹,temp.next = head ,把temp指向了head链,导致后面的会出现重复
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
prehead = head
# 第一个节点肯定不会重复
temp.next = head
head = head.next
temp = temp.next
while head:
if head.val != temp.val:
temp.next = head
head = head.next
temp = temp.next
print(temp.val)
else:
head = head.next
temp.next = None
return prehead.next
但如果最后面的数字也出现重复则删除不了,因为,虽然 else:
head = head.next,这里对temp没有操作,而temp的指向和head的指向实际上是一致的(不知道是不是这样理解
- 思路2:
其实直接在链上进行删除就好
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
if not head:
return head
cur = head
# 因为后面用到了cur.next,所以以其作为判断条件,以cur会报错
while cur.next:
if cur.val != cur.next.val:
cur = cur.next
else:
cur.next = cur.next.next
return head