83. 删除排序链表中的重复元素
2022年11月3日
一、问题描述
给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
示例 1:
输入:head = [1,1,2]
输出:[1,2]
示例 2:
输入:head = [1,1,2,3,3]
输出:[1,2,3]
提示:
链表中节点数目在范围 [0, 300] 内
-100 <= Node.val <= 100
题目数据保证链表已经按升序 排列
二、问题分析
- 算法思路如下:
三、解题代码
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def deleteDuplicates(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head:
return head
res = head
while head.next:
if head.next.val == head.val:
head.next = head.next.next
else:
head = head.next
return res
总结
由于给定的链表是排好序的,所以可以使用迭代的方式,不断检查下一节点的值是否与当前节点的值相等,相等则删除,最后返回头节点。