📅  最后修改于: 2023-12-03 15:41:09.935000             🧑  作者: Mango
给定一个有序链表,删除其中所有重复元素,使得每个元素只出现一次,并返回结果链表。
输入:
1->1->2->3->3
输出:
1->2->3
这道题目是一道链表操作的题目,需要注意的是给定的链表是有序的。我们可以从头遍历这个链表,如果当前节点的值和下一个节点的值相同,那么我们就可以删除下一个节点,否则继续遍历。这个算法的时间复杂度是 $O(n)$。
代码如下:
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
if not head:
return None
cur = head
while cur.next:
if cur.val == cur.next.val:
cur.next = cur.next.next
else:
cur = cur.next
return head
其中,ListNode 是一个链表的结构体,定义如下:
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
本题需要注意链表的操作,尤其是链表的删除操作。要想写出高效的算法,需要对链表的数据结构和操作非常熟悉。在实际工作中,链表也是一种非常重要的数据结构,在写代码的时候经常会用到。