算法四十天-删除排序链表中的重复元素

删除排序链表中的重复元素

题目要求

在这里插入图片描述

解题思路

一次遍历
由于给定的链表是排好序的,因此重复的元素在链表中的出现的位置是连续的,因此我们只需要对链表进行一次遍历,就可以删除重复的元素。
具体地,我们从指针cur指向链表的头节点,随后开始对链表进行遍历。如果cur.val == cur.next.val,可以直接将cur后移一位,移除值相同的链表。
当遍历完整这个链表时,返回链表的头节点就可以了

代码

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def deleteDuplicates(self, head: ListNode) -> ListNode:
        if not head or not head.next:
            return head
        cur = head
        while cur.next:
            if cur.val == cur.next.val:
                cur.next = cur.next.next
            else:
                cur = cur.next
        return head

复杂度分析

时间复杂度: O ( N ) O(N) O(N)
空间复杂度: O ( 1 ) O(1) O(1)

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-10 12:34:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-10 12:34:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-10 12:34:05       87 阅读
  4. Python语言-面向对象

    2024-04-10 12:34:05       96 阅读

热门阅读

  1. 2023第十四届蓝桥杯省赛C/C++大学A组题解

    2024-04-10 12:34:05       34 阅读
  2. leetcode2529-正整数和负整数的最大计数

    2024-04-10 12:34:05       32 阅读
  3. Vue文档

    Vue文档

    2024-04-10 12:34:05      27 阅读
  4. LeetCode 15.三数之和

    2024-04-10 12:34:05       36 阅读