从排序数组中删除重复项

2018-12-06  本文已影响0人  lbqs

题目

示例

给定数组 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;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读