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

LeetCode刷题笔记第80题:删除有序数组中的重复项 II

LeetCode刷题笔记第80题:删除有序数组中的重复项 II

题目:

删除升序数组中超过两次的元素后的数组长度

想法:

使用快慢指针的方法完成,使用快指针遍历整个数组,使用慢指针完成相同元素最多保留两个。在快指针遍历到超过两个相同元素时,慢指针停止移动,等到快指针遍历的不同的元素时,将不同元素赋值给慢指针所在位置并向后移动一位,直至快指针遍历完整个数组,慢指针所在的位置即为删除后的数组长度。

class Solution:def removeDuplicates(self, nums: List[int]) -> int:slow = 0for fast in range(len(nums)):if slow < 2 or nums[fast] != nums[slow - 2]:nums[slow] = nums[fast]slow += 1return slow

时间复杂度:O(N)
空间复杂度:O(1)
本题中的想法主要是利用快指针遍历数组找到所有不超过两个的相同元素,并将这些元素赋值给慢指针所指,因为是在原数组上的原地操作,所以慢指针所指新数组没有产生额外的空间占用

http://www.lryc.cn/news/251409.html

相关文章:

  • 【开源存储】minio对象存储部署实践
  • Java编程强化练习(二)
  • Redis的高可用模式
  • 非功能关键知识总结(一)
  • 时间序列趋势检验相关检验方法:斜率法、Cox-Stuart检验、Mann-Kendall检验
  • Redis相关知识
  • 数据管理系统-week10-自由访问控制
  • Python遥感开发之批量拼接
  • 【bat】批处理脚本大全
  • java设计模式学习之【单例模式】
  • UWB高精度定位系统项目源码
  • WPF Live Charts2 自学笔记
  • 大小堆的实现(C语言)
  • Linux系统之centos7编译安装Python 3.8
  • Lambda表达式与方法引用
  • 二维数组处理(一)
  • 基于JNI实现调用C++ SDK
  • 计算机组成原理笔记——存储器(静态RAM和动态RAM的区别,动态RAM的刷新, ROM……)
  • 企业计算机服务器locked1勒索病毒数据恢复,locked1勒索病毒解密流程
  • Session 与 JWT 的对决:谁是身份验证的王者? (下)
  • 论文笔记:Confidential Assets
  • Docker下搭建MySQL主从复制
  • VBA数据库解决方案第七讲:如何利用Recordset对象打开数据库的数据记录集
  • 内部培训平台的系统 PlayEdu搭建私有化内部培训平台
  • Elasticsearch 相似度评分模型介绍
  • 视频生成的发展史及其原理解析:从Gen2、Emu Video到PixelDance、SVD、Pika 1.0
  • SQL Server 2016(基本概念和命令)
  • Linux C语言 30-套接字操作
  • RPC和REST对比
  • 外包干了2年,技术退步明显。。。