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

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

说明:

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝
int len = removeDuplicates(nums);

// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。
for (int i = 0; i < len; i++) {
print(nums[i]);
}

示例 1:

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

解题思路

将出现次数多于2的数字使用双指针标记出现的区间,用区间的后面元素覆盖出现次数超出2的那个部分

代码

class Solution {public int removeDuplicates(int[] nums) {int cur=1,res=1,tail=nums.length;while (cur<tail){if(nums[cur]==nums[cur-1]){int next=cur+1;while (next<tail&&nums[next]==nums[cur])  next++;int curL=next-cur-1;System.arraycopy(nums,next,nums,cur+1,tail-next);tail-=curL;}cur++;}return tail;}
}

leetcode 80. 删除有序数组中的重复项 II相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. LeetCode算法 删除有序数组中的重复项 删除有序数组中的重复项|| C++

    目录 题目 删除有序数组中的重复项 参考答案 题目 删除有序数组中的重复项|| 参考答案 题目 删除有序数组中的重复项 给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ...

  9. 8. Leetcode 26. 删除有序数组中的重复项 (数组-同向双指针-快慢指针)

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

最新文章

  1. unbutu18.04.4 截图工具 flameshot
  2. 外包网络推广公司探索出高排名网站优化的技巧!
  3. 欲了解Android Studio,必先知道Gradle
  4. jzoj3852-单词接龙【0/1分数规划,负环】
  5. 使用地图触发功能处理相干事件
  6. CI集成 ckeditor 配置
  7. Redis的内存回收机制和数据过期淘汰策略
  8. 【Python】AttributeError: 'Series' object has no attribute 'order'
  9. 安卓颜色标签android
  10. xjad使用中的几个问题
  11. 使用福禄克CFP光纤测试仪进行Tier 1和Tier 2光纤测试
  12. Insert Guest Additions CD image 没有反应
  13. llg的农场(farm)
  14. 11-ES2015基础语法
  15. c语言菜鸟编译器,C语言菜鸟基础教程之Hello World
  16. 【学习笔记】彻底删除2345输入法
  17. EduCoder-Web程序设计基础-html5—结构元素-第3关:figure元素和figcaption元素的应用
  18. c语言单项选择题及答案,2011年计算机二级C语言单项选择题及答案解析精选3
  19. 数据中台的规划设计理念
  20. 初学画画怎么画线稿?学画线稿的方法有哪些?

热门文章

  1. Linux :IO多路复用模型
  2. lseek函数的使用
  3. scrapy框架的理解
  4. quartz.net 执行后台任务
  5. Codeforces 862D. Mahmoud and Ehab and the binary string 【二分】(交互)
  6. 前端之sublime text配置
  7. DW 在onload运行recordset find.html时 发生了以下javascript错误
  8. 类中匿名函数如何从 event 中去除
  9. WPF 程序最大化,窗口,最小化
  10. nginx 并发过十万