美文网首页
从排序数组中删除重复项

从排序数组中删除重复项

作者: lbqs | 来源:发表于2018-12-06 12:23 被阅读0次

    题目

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

    示例

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

    思路:

    1. 首先判特,如果数组为空直接返回。
    2. i 记录当前访问元素下标。
    3. 遍历数组,当所访问元素大于大于当前元素前一个元素时:
      将所访问元素赋值给当前元素
      i 向后移动一位
    4. 当数组遍历结束时,i 值即为新数组长度。

    AC代码:

    class Solution {
    public:
        int removeDuplicates(vector<int>& nums) {
            if(nums.empty())
                return 0;
            
            int i = 1;
            for(int n : nums)
            {
                if(n > nums[i - 1])
                    nums[i++] = n;
            }
            
            return i;
        }
    };
    

    相关文章

      网友评论

          本文标题:从排序数组中删除重复项

          本文链接:https://www.haomeiwen.com/subject/qbbncqtx.html