博客
关于我
每日一题80-删除排序数组中的重复项 II
阅读量:731 次
发布时间:2019-03-21

本文共 901 字,大约阅读时间需要 3 分钟。

答案解题步骤

给定一个已排序的数组nums,目标是在原地删除重复元素,使得每个元素最多出现两次,同时返回修改后的数组长度。

方法思路

  • 问题分析:我们需要确保数组中的每个元素最多出现两次。如果有三个连续的相同元素,只保留前两个,第三个被删除。
  • 计数器设计:使用一个计数器count来跟踪当前元素的出现次数。初始值为1。
  • 遍历数组:遍历每个元素,检查当前元素与前一个元素的关系:
    • 如果当前元素等于前一个,说明重复,计数器加一。如果计数器超过两次,删除当前元素,并让索引移到前一个元素位置,恢复计数器。
    • 如果当前元素和前一个不同,重置计数器为1。
  • 原地修改数组:当需要删除元素时,直接删除,并相应调整索引,避免重复元素影响后续判断。
  • 优化后的算法步骤

  • 初始化索引和计数器i=1count=1
  • 遍历数组
    • 如果nums[i]等于nums[i-1],计数器加一。如果计数器超过2,删除nums[i],并减一索引。
    • 否则,计数器重置为1。然后继续遍历。
  • 返回新数组长度:处理完成后,返回数组长度。
  • 代码实现

    class Solution:    def removeDuplicates(self, nums: list[int]) -> int:        i, count = 1, 1        while i < len(nums):            if nums[i] == nums[i-1]:                count += 1                if count > 2:                    nums.pop(i)                    i -= 1            else:                count = 1            i += 1        return len(nums)

    解决思路总结

    通过在原地遍历数组并使用计数器来控制每个元素的出现次数,确保数组满足每个元素最多两次的条件。这种方法在时间复杂度上为O(n),空间复杂度为O(1),符合题目要求,且实现简洁高效。

    转载地址:http://idagz.baihongyu.com/

    你可能感兴趣的文章
    mysqli
    查看>>
    MySQLIntegrityConstraintViolationException异常处理
    查看>>
    mysqlreport分析工具详解
    查看>>
    MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
    查看>>
    Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
    查看>>
    mysql_real_connect 参数注意
    查看>>
    mysql_secure_installation初始化数据库报Access denied
    查看>>
    MySQL_西安11月销售昨日未上架的产品_20161212
    查看>>
    Mysql——深入浅出InnoDB底层原理
    查看>>
    MySQL“被动”性能优化汇总
    查看>>
    MySQL、HBase 和 Elasticsearch:特点与区别详解
    查看>>
    MySQL、Redis高频面试题汇总
    查看>>
    MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
    查看>>
    mysql一个字段为空时使用另一个字段排序
    查看>>
    MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
    查看>>
    MYSQL一直显示正在启动
    查看>>
    MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
    查看>>
    MySQL万字总结!超详细!
    查看>>
    Mysql下载以及安装(新手入门,超详细)
    查看>>
    MySQL不会性能调优?看看这份清华架构师编写的MySQL性能优化手册吧
    查看>>