删除有序数组中的重复项
·
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;
}
};
更多推荐
所有评论(0)