1

删除有序链表中重复的元素-1

描述
删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次
例如:
给出的链表\(1\to 1\to2\),返回\(1\to2\)
给出的链表为\(1\to 1\to2\to3\to3\),返回\(1\to2\to3\)
数据范围:链表长度满足\(0 \le n \le100\),,链表中任意节点的值满足\(\mid val\mid \le 100\),
进阶:空间复杂度$o(1) \(,时间复杂度\)o(n) $

思路
当链表为空时,直接返回整个链表;当链表不为空时,使用cur指向头节点:
cur.next为空时,返回链表;若不为空时,判断cur的值是否与cur.next相同,如果相同,则令cur.next=cur.next.next,若不相同,cur=cur.next,指针后移。

代码

class Solution:
    def deleteDuplicates(self , head: ListNode) -> ListNode:
        # write code here
        if not head:
            return head
        cur = head
        while cur.next:
            if cur.val == cur.next.val:
                cur.next = cur.next.next
            else:
                cur = cur.next
        return head
posted @ 2024-03-21 20:10  Bonne_chance  阅读(13)  评论(0编辑  收藏  举报
1