1 题目
2 思路
双指针+快慢:慢指针维持不重复的元素,快指针遍历数组,找到不重复的元素,并赋值给慢指针i。快慢指针之间的元素都是丢弃的元素。
只需要看i-1的元素和j元素是否相等,不相等则j元素为不重复元素,赋值给i元素。
时间复杂度:O(n),空间复杂度:O(1)。
3 题解
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int n = nums.size();
if (n == 0) return 0;
int i = 1, j = 1;
while (j < n) {
if (nums[i-1] != nums[j]) {
nums[i++] = nums[j];
}
++j;
}
return i;
}
};
评论区