跳到主要内容

83. 删除排序链表中的重复元素(Easy)

题目描述

Leetcode 地址

样例

Input: 1->1->2->3->3
Output: 1->2->3

解题思路

  1. 遍历找到重复元素
  2. 删除重复的元素
  3. 进一步查找

代码

# 第一种写法,一口气找到所有重复元素的末尾,直接删除
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
if not head: return head
p = head
while p:
temp = p
while temp.next and temp.val == temp.next.val: # 1. 找到重复元素
temp = temp.next
p.next = temp.next # 2. tmp.next 指向的一定是非重复元素
p = p.next # 3. 进一步查找
return head

# 第二种写法,就是碰到同样的元素就删除
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
if not head or not head.next: return head # 空 or 单
p = head
while p and p.next:
if p.val == p.next.val:
p.next = p.next.next
else:
p = p.next

return head