删除有序数组中重复项C++实现
时间: 2024-09-29 22:14:11 浏览: 39
西南交通大学计算机程序设计基础-实验9-C++.docx
5星 · 资源好评率100%
在C++中删除有序数组中的重复项可以采用双指针技巧。这里是一个简单的线性时间复杂度O(n)的解决方案:
```cpp
#include <iostream>
#include <vector>
std::vector<int> removeDuplicates(std::vector<int>& nums) {
if (nums.empty()) return nums;
int i = 0; // 左指针,用于检查是否遇到新值
for (int j = 1; j < nums.size(); ++j) { // 右指针,遍历整个数组
if (nums[i] != nums[j]) { // 如果当前值与前一个不同
i++; // 更新左指针
nums[i] = nums[j]; // 把新值移到有效位置
}
}
nums.resize(i + 1); // 调整大小,去掉多余的元素
return nums;
}
int main() {
std::vector<int> nums = {1, 1, 2, 2, 3, 4, 4, 5};
removeDuplicates(nums);
for (const auto& num : nums) {
std::cout << num << " ";
}
std::cout << "\n";
阅读全文