题目描述

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

示例

示例 1:
输入:nums = [1,1,1,2,2,3]
输出:5, nums = [1,1,2,2,3]
解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。 不需要考虑数组中超出新长度后面的元素。

示例 2:
输入:nums = [0,0,1,1,1,1,2,3,3]
输出:7, nums = [0,0,1,1,2,3,3]
解释:函数应返回新长度 length = 7, 并且原数组的前五个元素被修改为 0, 0, 1, 1, 2, 3, 3 。 不需要考虑数组中超出新长度后面的元素。

源代码

思路:
采用双指针
快指针遍历整个数组,慢指针为修改后数组的长度

class Solution {public:int removeDuplicates(vector<int>& nums) {int n = nums.size();if(n <= 2){return n;}int sp = 2;for(int fp = 2; fp < n; fp++){if(nums[fp] != nums[sp - 2]){nums[sp++] = nums[fp];}}return sp ;}
};

复杂度分析:

  • 时间复杂度:O(n),
  • 空间复杂度:O(1).

力扣-80 删除有序数组中的重复项 II相关推荐

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

    80. 删除有序数组中的重复项 II Ideas 没啥技术含量,从后往前,check+delete. Code Python class Solution:def removeDuplicates(s ...

  2. 力扣 26.删除有序数组中的重复项

    题目描述: 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度.元素的 相对顺序 应该保持 一致 . 由于在某些语言中不能改变数组 ...

  3. 14. Leetcode 80. 删除有序数组中的重复项 II (数组-同向双指针-快慢指针)

    给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度.不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条 ...

  4. leetcode 80. 删除有序数组中的重复项 II

    给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的 ...

  5. 2022-2-11 80.删除有序数组中的重复项II

    第一版: 问题在于,检测不到的时候赋值一次,检测到了赋值两次, 检测不到的情况会出现于数组中的数据发生了变化的时候. #include<iostream> #include<vect ...

  6. 2021-05-11(80. 删除有序数组中的重复项 II)

    没想到双指针. class Solution {public int removeDuplicates(int[] nums) {int n=nums.length;if(n<=2){retur ...

  7. Leecode刷题【1数组专题4】80. 删除排序数组中的重复项II (以及通用解法)

    Leecode刷题 [1数组专题4]80. 删除排序数组中的重复项II (以及通用解法) 题目: 思路 双指针法: (错误代码) 正解: 通用解法: 题目: 给你一个有序数组 nums ,请你 原地 ...

  8. 80. 删除排序数组中的重复项 II golang

    80. 删除排序数组中的重复项 II 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O ...

  9. 力扣 26.删除有序数组中的重复元素

    文章目录 题目 思路 AC代码 收获 题目 删除有序数组中的重复元素 思路 快慢指针.快指针不断向前走.判断快指针所指的数与快指针前面的数是否相等,如果相等就说明是重复的,要继续向后移动,如果不相等, ...

  10. LeetCode 80. 删除排序数组中的重复项 II

    1. 题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完 ...

最新文章

  1. 这是我转贴的strcpy函数与strncpy函数的比较,其中有些错误,建议大家还是看msdn,要好的多
  2. java基础之构造方法
  3. .NET Compact Framework下的单元测试
  4. STL学习之一(栈(statck))
  5. 前端使用linux命令更新项目生产包与测试包命令
  6. Only digits (0-9) can be put inside [] in the path string: formData.XXX
  7. instanceof的用法①
  8. UVA - 1589 ​​​​​​​Xiangqi
  9. oracle将一个表数据更新时间,Oracle批量更新,将一个表的数据批量更新另一表
  10. Centos7 修改主机名
  11. 大数据实效_普洱市以“大数据”思维全面提升新时代干部管理监督实效
  12. 机器人码垛手持式编程_码垛机器人编程软件图解教程
  13. 电脑用户计算机名文件夹,电脑用户名文件夹名称更改
  14. word通配符,查找与替换
  15. 搜狗浏览器在高速模式下,右键点击才会出现“审查元素”
  16. linux系统盘的概念,了解linux系统硬盘分区概念-SELinux入门-linux网卡配置及参数学习_169IT.COM...
  17. 酷狗android平板,安卓平板车载共享 体验酷狗音乐HD版
  18. python--第六章 python函数 装饰器 类 对象
  19. 22协方差矩阵 matlab,协方差协方差矩阵【matlab实例】
  20. 立创开源 | 高压可控硅驱动控制板

热门文章

  1. Python拷贝(深拷贝deepcopy与浅拷贝copy)
  2. Oracle中 ORA-12704:字符集不匹配
  3. Pytorch中的强化学习
  4. unity中动态生成网格
  5. hibernate一级缓存的源码初窥
  6. Android SQLite数据库 SQLiteOpenHelper的操作使用
  7. C#用链式方法表达循环嵌套
  8. ASP.NET - 一般处理程序获取session值
  9. Java -- 在Eclipse上使用Spring
  10. GIS-python学习