输入:非严格递增数组 nums。
要求:原地删除重复元素,使每个元素只出现一次,返回新数组长度。
输出:新数组前若干元素为唯一元素,顺序保持不变。
思路:双指针法。
- 指针 slow:记录下一个唯一元素存放位置。
- 指针 i:遍历数组。
- 当
nums[i] != nums[slow-1]时,将该元素赋值到nums[slow],并移动 slow。
复杂度:时间 O(n),空间 O(1)。
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int slow = 1;
int n = nums.size();
for (int i = 1; i < n; i++) {
if (nums[i] != nums[slow-1]) {
nums[slow++] = nums[i];
}
}
return slow;
}
};
97

被折叠的 条评论
为什么被折叠?



