1. 去除数组中的重复元素
题目
已知一个已经排序的数组,去除数组中的重复元素,返回数组的长度。
思路
使用双指针,维护一个滑动窗口,窗口内的元素全部为重复的元素。问题转化为,确定两个指针什么时候移动,怎么移动的问题了。
代码
int getLength(std::vector<int> &num)
{
int index = 1;
for (int i = 1; i < num.size(); i++) {
if (num[i] != num[index-1]) {
num[index++] = num[i];
}
}
return index;
}
2. 去重数组中的重复元素2
题目
已知一个有重复元素的数组,去除其中的重复元素最多保留两个,返回剩余数组中的元素的个数
思路
使用双指针维护一个滑动窗口
代码
int getLength(std::vector<int> &num)
{
int index = 2;
for (int i = 2; i < num.size(); i++) {
if (num[i] != num[index-2]) {
num[index++] = num[i];
}
}
return index;
}