C++程序 从排序数组中删除重复项

C++程序 从排序数组中删除重复项

C++中,我们可以通过以下的代码来从排序好的数组中删除重复项。

#include <iostream>
#include <vector>

using namespace std;

int removeDuplicates(vector<int>& nums) {
    if (nums.empty()) {
        return 0;
    }
    int j = 0;
    for (int i = 1; i < nums.size(); i++) {
        if (nums[i] != nums[j]) {
            j++;
            nums[j] = nums[i];
        }
    }
    return j + 1;
}

int main () {
    vector<int> nums {1, 1, 2, 2, 3, 4, 4, 5};
    cout << "before removal: ";
    for (int i = 0; i < nums.size(); i++) {
        cout << nums[i] << " ";
    }
    cout << endl;
    int len = removeDuplicates(nums);
    cout << "after removal: ";
    for (int i = 0; i < len; i++) {
        cout << nums[i] << " ";
    }
    cout << endl;
    return 0;
}

上面的代码使用了一个int变量j来记录非重复数的下标,从第二个数开始遍历,如果当前数nums[i]与上一个数不相等,则表示是一个新的非重复数,将其存到原数组中。最后返回j + 1,即为剩余元素的长度。

我们来测试一下这个程序。假设原数组是{1, 1, 2, 2, 3, 4, 4, 5},运行结果如下所示:

before removal: 1 1 2 2 3 4 4 5 
after removal: 1 2 3 4 5 

可以看到,重复的元素已经被删除,只剩下独一无二的元素了。

结论

以上就是从排序数组中删除重复项的C++程序,通过一些技巧来提高删除效率,可以在运行时间上得到优化。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例