1.

题目链接:hhttps://leetcode.cn/problems/remove-duplicates-from-sorted-array/

视频链接:https://www.bilibili.com/video/BV1fc2FByE4f/

2.

核心逻辑
 
- 慢指针  i :指向当前要被填充的位置,同时也代表当前已去重部分的最后一个元素。
- 快指针  j :遍历整个数组,寻找和  nums[i]  不同的新元素。
- 当  nums[j] != nums[i]  时,说明找到了一个新的不重复元素,我们让  i  前进一位,并把  nums[j]  赋值给  nums[i] 。
- 遍历结束后, i+1  就是不重复元素的个数,直接返回即可。
3.代码

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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐