Leetcode#26: Remove Duplicates from Sorted Array

来源:互联网 发布:landsat的波段数据 编辑:程序博客网 时间:2024/05/27 19:26

题目描述:原地移除有序数组中的重复元素,返回移除后的数组长度

要求:不能利用额外的空间开销

思路:

  • 先判断数组是否为空,为空返回0;
  • 两个指针, i 指向原数组的元素, inedx 指向不重复数组的元素;
  • 如果两个指针指向的数字相等,则i++;
  • 如果两个指针指向的数字不相等,则index++,并用原数组的第i个值覆盖第index个值;
  • index是从0开始的,要输出个数,返回 index + 1

若有需要,请访问我的Github获取完整C++源码。

class Solution {public:    int removeDuplicates(vector<int>& nums)     {        if (nums.empty())        {            return 0;        }        int index = 0;        //在用下标访问元素时,vector使用vector::size_type作为下标类型,而数组下标的类型是size_t        for(size_t i = 1; i < nums.size(); i++)             {            if(nums[index] != nums[i])            {                index ++;                nums[index] = nums[i];            }        }        //index是从0开始的,要输出个数,所以是 index + 1        return index + 1;                }};
原创粉丝点击