[LeetCode]26. Remove Duplicates from Sorted Array
题目描述
思路
如果只要统计非重复元素的个数的话水题无疑
这道题要求在O(1)的空间复杂度内统计重复元素并且将原数组中的重复元素去掉
思路就是用没有出现过的元素覆盖掉重复出现过的元素,最后重置vector长度,将后面多的部分舍弃,详见代码
代码
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if (nums.size() == 0)
return 0;
int res = 1;
for (int i = 1; i < nums.size(); ++i) {
while (i < nums.size() && nums[i] == nums[i - 1])
++i;
if (i == nums.size())
break;
nums[res++] = nums[i];
}
nums.resize(res);
return res;
}
};
int main() {
vector<int> nums = { 1, 1, 2, 2, 2 };
Solution s;
cout << s.removeDuplicates(nums) << endl;
system("pause");
return 0;
}
本文介绍了解决LeetCode 26题的方法:删除有序数组中的重复项。通过遍历数组并将非重复元素覆盖到前面的方式,在O(1)空间复杂度下实现了去除重复元素的目标,并调整了数组大小。
1106

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



