当前位置:首页 C++ > 正文

C++删除有序数组中的重复项

作者:野牛程序员:2024-02-03 13:22:58 C++阅读 2146

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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击