当前位置: 首页 > news >正文

算法练习4——删除有序数组中的重复项 II

LeetCode 80 删除有序数组中的重复项 II

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

双指针
快慢指针(单向遍历双指针)

class Solution:def removeDuplicates(self, nums: List[int]) -> int:if not nums:return 0i, repeat_item, repeat_times = 1, nums[0], 1for idx in range(1, len(nums)):if nums[idx] == repeat_item:if repeat_times < 2:nums[i] = nums[idx]i += 1repeat_times += 1else:repeat_item = nums[idx]nums[i] = nums[idx]i += 1repeat_times = 1return i

看了看题解,发现常数可以从2开始,然后代码可以更加精简

class Solution(object):def removeDuplicates(self, nums):slow = 0for fast in range(len(nums)):if slow < 2 or nums[fast] != nums[slow - 2]:nums[slow] = nums[fast]slow += 1return slow# 作者:负雪明烛
# 链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/
# 来源:力扣(LeetCode)
# 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
http://www.lryc.cn/news/178277.html

相关文章:

  • 【C++进阶(六)】STL大法--栈和队列深度剖析优先级队列适配器原理
  • linux opensuse使用mtk烧录工具flashtool
  • Visio如何对文本打下标、上标,以及插入公式编辑器等问题(已解决)
  • 快速将iPhone大量照片快速传输到电脑的办法!
  • TCP/IP协议簇包含的协议
  • 天地图绘制区域图层
  • git权限不够:Ask a project Owner or Maintainer to create a default branch
  • AI在材料科学中的应用
  • VSCode快速设置heder和main函数
  • JimuReport积木报表 v1.6.2 版本正式发布—开源免费的低代码报表
  • sqlsession对象为什么不能被共享?
  • MySQL MMM高可用架构
  • Spring Boot中配置文件介绍及其使用教程
  • Hobby脚本自动化工具
  • Matlab随机数的产生
  • 计算机网络 第四章:网络层
  • 分享一个docker无法启动的小问题
  • Linux 安全 - Capabilities机制
  • 分布式搜索引擎es-3
  • Matlab坐标轴标签中文设置宋体
  • 做一个贪吃蛇小游戏happy一下
  • opencv形态学-膨胀
  • 玄子Share 设计模式 GOF 全23种 + 七大设计原则
  • 单链表操作 C实现
  • WordPress主题网站首页添加好看的四格小工具教程
  • unittest自动化测试框架讲解以及实战
  • 数学建模之Matlab基础操作
  • 【Nuxt】04 Nuxt2-SEO: sitemap.xml、seo优化、robots.txt
  • VMware VSAN 入门
  • 【设计模式】备忘录模式