C++删除有序数组中的重复项
作者:野牛程序员:2024-02-03 13:22:58 C++阅读 2550
C++中删除有序数组中的重复项可以通过使用双指针技巧来实现。下面是一个示例代码:
#include <iostream> #include <vector> using namespace std; int removeDuplicates(vector<int>& nums) { if (nums.empty()) return 0; // 空数组直接返回0 int i = 0; // 慢指针,指向不重复元素的末尾 for (int j = 1; j < nums.size(); ++j) { if (nums[j] != nums[i]) { // 如果当前元素与慢指针指向的元素不相同,说明是新的不重复元素 // 将其放到慢指针的下一个位置 ++i; nums[i] = nums[j]; } } return i + 1; // 返回不重复元素的个数 } int main() { vector<int> nums = {1, 1, 2, 2, 3, 4, 4, 5, 5, 5}; int len = removeDuplicates(nums); cout << "After removing duplicates, array elements are: "; for (int i = 0; i < len; ++i) { cout << nums[i] << " "; } cout << endl; return 0; }
这段代码中,使用了两个指针,i指向不重复元素的末尾,j用于遍历数组。当发现nums[j]与nums[i]不同时,将其放到nums[i]的下一个位置,并且递增i。最后返回的i+1即为不重复元素的个数。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892