1. 题目来源
2. 题目解析
unique()
函数就是这样实现的,去重在很多方面还是经常用到的。例如在数据离散化的时候…
思路:
- 经典双指针算法。找到所有第一次出现的数。
- 第一个指针遍历所有数,第二个指针指向当前存的所有不同的数。
- 第一个指针指向的数和前一个数相同则跳过。
- 时间复杂度: O ( n ) O(n) O(n)。
- 空间复杂度: O ( 1 ) O(1) O(1)
代码:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int i = 0, j = 0;
for (i, j; i < nums.size(); i ++) {
if (!i || nums[i] != nums[i - 1])
nums[j ++] = nums[i];
}
return j;
}
};