📌  相关文章
📜  算法测验|须藤放置[1.5] |问题13(1)

📅  最后修改于: 2023-12-03 15:41:09.935000             🧑  作者: Mango

算法测验|须藤放置[1.5] |问题13

问题描述

给定一个有序链表,删除其中所有重复元素,使得每个元素只出现一次,并返回结果链表。

输入:

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
总结

本题需要注意链表的操作,尤其是链表的删除操作。要想写出高效的算法,需要对链表的数据结构和操作非常熟悉。在实际工作中,链表也是一种非常重要的数据结构,在写代码的时候经常会用到。