专栏首页和蔼的张星的图像处理专栏100. 删除排序数组中的重复数字 双指针+替换

100. 删除排序数组中的重复数字 双指针+替换

给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。 样例 给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。

双指针+替换

双指针加替换,排序好的数组就更简单,不用查找,只需比较就可以,这个和移动0那个很像,但是比那个稍微复杂一点,因为不是每个数和0来比较,而是要和替换后最后一个数比较,如果可以用另外一个数组当然更简单,这里要求原位进行,所以注意第一个数的处理就可以:

  int removeDuplicates(vector<int> &nums) {
    
      if(nums.size()==0)
        return 0;
      int i=1;                            //从第二个数开始检验
      int j=0;
      for(;i<nums.size();i++)
      {
          if(nums[i]!=nums[j])
          {
              nums[j+1]=nums[i];    //这里从第二个数开始替换,第一个数不用替换
              j++;
          }
      }
    
      nums.resize(j+1);           //重构这个数组,这样就只保留前面的j+1个。
      return j+1;
        // write your code here
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 101. 删除排序数组中的重复数字 II

    允许出现两次重复的意思就是说两次重复不算重复,和一次重复的略有不同,只需要一个计数器来计算是否有两次重复就可以了。

    和蔼的zhxing
  • 539. 移动零 冒泡双指针

    给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序 样例 给出 nums = [0, 1, 0, 3, 12], 调用函数...

    和蔼的zhxing
  • 剑指offer刷题记(C++版本)

    也算是临时抱佛脚了吧,3月之前刷了lintcode100多道题吧,后来发文章什么的就放下了,最近秋招在即在牛客网上想着把剑指offer这本书刷完,尽量早刷完吧,...

    和蔼的zhxing
  • LeetCode题组:第26题-删除排序数组中的重复项

    给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。(注意这里提到了排序数组,也就是说数组是有序的。如果无序,...

    明天依旧可好
  • 去除有序数组中重复元素的 3 种方法,快来瞧瞧吧

    给定一个有序数组,要删除数组重复出现的元素,使得每个元素之出现一次,然后返回移除重复数组后的新长度;

    村雨遥
  • leetcode-easy-array-删除排序数组中的重复项

    给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

    shengjk1
  • LeetCode 189:旋转数组 Rotate Array

    Given an array, rotate the array to the right by k steps, where k is non-negativ...

    爱写bug
  • LeetCode 189:旋转数组 Rotate Array

    Given an array, rotate the array to the right by k steps, where k is non-negativ...

    爱写bug
  • Dimple在左耳听风ARTS打卡(第九期)

    所谓ARTS: 每周至少做一个LeetCode的算法题;阅读并点评至少一篇英文技术文章;学习至少一个技术技巧;分享一篇有观点和思考的技术文章。(也就是Algor...

    程序员小跃
  • C#版 - Leetcode611.有效三角形的个数 - 题解

    在线提交: https://leetcode-cn.com/problems/valid-triangle-number/

    Enjoy233

扫码关注云+社区

领取腾讯云代金券