当前位置:   article > 正文

数组2-删除有序数组中的重复项_26. 删除有序数组中的重复项 c

26. 删除有序数组中的重复项 c

题目描述

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

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

示例 1:

输入:nums = [1,1,2]

输出:2, nums = [1,2]

解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。

 

解题思路

双指针

prev cur

dest

 

  1. int removeDuplicates(int* nums, int numsSize){
  2. if (numsSize == 0)
  3. return 0;
  4. int prev = 0, cur = 1, dest = 0;
  5. while (cur < numsSize)
  6. {
  7. if (nums[prev] != nums[cur])
  8. {
  9. nums[dest] = nums[prev];
  10. prev++;
  11. cur++;
  12. dest++;
  13. }
  14. else
  15. {
  16. prev++;
  17. cur++;
  18. }
  19. }
  20. nums[dest] = nums[prev];
  21. dest++;
  22. return dest;
  23. }

 

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

闽ICP备14008679号