当前位置:   article > 正文

LeetCode 面试经典150题 80.删除有序数组中的重复项II

LeetCode 面试经典150题 80.删除有序数组中的重复项II

题目

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

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

思路

代码

  1. class Solution {
  2. public int removeDuplicates(int[] nums) {
  3. int k = 2; // 保留位数
  4. int j = k - 1; // 始终指向结果数组的最后一个位置
  5. for (int i = k; i < nums.length; i++) {
  6. // 注意和谁比较 j-k+1
  7. if (nums[j - k + 1] != nums[i]) {
  8. nums[++j] = nums[i];
  9. }
  10. }
  11. return j + 1;
  12. }
  13. }

性能:时间复杂度 O(n)  空间复杂度O(1)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/247789
推荐阅读
相关标签
  

闽ICP备14008679号