C++如何去除数组中重复元素

一、使用STL中的set容器

set是一个有序且不能重复的容器,C++中STL提供了set容器可以快速去重。通过set容器可将元素插入到set中,但不会重复,同时可以使用unique()函数将重复元素排到后面,然后通过erase()函数将重复元素删除。

#include <set>
#include <algorithm>
#include <vector>

using namespace std;

void removeDuplicates(int arr[], int n){
    set<int> s;

    for (int i = 0; i < n; i++){
        s.insert(arr[i]);
    }

    copy(s.begin(), s.end(), arr);
    int newSize = s.size();
    for (int i = newSize; i < n; i++){
        arr[i] = 0;
    }
}

二、使用C++11中的unique函数

C++11中的unique函数可以在数组中移除相邻的重复元素,但不会真正地删除元素。可以结合erase函数删除后面的重复元素。unique函数需要注意的是,传入的数组必须是有序的。为了在不使用sort函数的情况下实现有序的数组,可以使用algorithm头文件中的sort函数。

#include <algorithm>

using namespace std;

void removeDuplicates(int arr[], int n){
    sort(arr, arr + n);
    int newSize = unique(arr, arr + n) - arr;
    for (int i = newSize; i < n; i++){
        arr[i] = 0;
    }
}

三、使用双重循环

双重循环是一种朴素的方法。先用第一个循环遍历每一个元素,然后用第二个循环遍历每一个和该元素进行比较,如果找到相同的元素,则将其后面所有元素向前移动,最后将新的数组长度减去重复元素的个数。

void removeDuplicates(int arr[], int n){
    int newSize = n;
    for (int i = 0; i < newSize; i++){
        for (int j = i + 1; j < newSize; j++){
            if (arr[i] == arr[j]){
                for (int k = j; k < newSize; k++){
                    arr[k] = arr[k + 1];
                }
                newSize--;
                j--;
            }
        }
    }

    for (int i = newSize; i < n; i++){
        arr[i] = 0;
    }
}

原创文章,作者:UDZX,如若转载,请注明出处:https://www.506064.com/n/145521.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
UDZXUDZX
上一篇 2024-10-27 23:50
下一篇 2024-10-27 23:50

相关推荐

  • Python遍历集合中的元素

    本文将从多个方面详细阐述Python遍历集合中的元素方法。 一、for循环遍历集合 Python中,使用for循环可以遍历集合中的每个元素,代码如下: my_set = {1, 2…

    编程 2025-04-29
  • Python列表中大于某数的元素处理方法

    本文将会介绍如何在Python列表中找到大于某数的元素,并对其进行进一步的处理。 一、查找大于某数的元素 要查找Python列表中大于某数的元素,可以使用列表推导式进行处理。 nu…

    编程 2025-04-29
  • Python Set元素用法介绍

    Set是Python编程语言中拥有一系列独特属性及特点的数据类型之一。它可以存储无序且唯一的数据元素,这使得Set在数据处理中非常有用。Set能够进行交、并、差集等操作,也可以用于…

    编程 2025-04-29
  • Python编程实现列表元素逆序存放

    本文将从以下几个方面对Python编程实现列表元素逆序存放做详细阐述: 一、实现思路 一般来说,使用Python将列表元素逆序存放可以通过以下几个步骤实现: 1. 定义一个列表 2…

    编程 2025-04-29
  • Python集合加入元素

    Python中的集合是一种无序且元素唯一的集合类型。集合中的元素可以是数字、字符串、甚至是其他集合类型。在本文中,我们将从多个方面来探讨如何向Python集合中加入元素。 一、使用…

    编程 2025-04-29
  • Java创建一个有10万个元素的数组

    本文将从以下方面对Java创建一个有10万个元素的数组进行详细阐述: 一、基本介绍 Java是一种面向对象的编程语言,其强大的数组功能可以支持创建大规模的多维数组以及各种复杂的数据…

    编程 2025-04-28
  • 如何在谷歌中定位系统弹框元素

    本文将从以下几个方面为大家介绍如何在谷歌中准确地定位系统弹框元素。 一、利用开发者工具 在使用谷歌浏览器时,我们可以通过它自带的开发者工具来定位系统弹框元素。 首先,我们可以按下F…

    编程 2025-04-28
  • Python三种基本输入元素

    本文将从多个方面对于Python三种基本输入元素进行详细的阐述并给出代码示例。 一、Python三种基本输入元素解答 Python三种基本输入元素包括命令行参数、标准输入和文件输入…

    编程 2025-04-28
  • Python元组元素分成单个整数

    本文将介绍如何将Python元组中的元素分成单个整数,并提供多种实现方式。 一、使用for循环遍历元组实现 可以通过for循环遍历元组的每一个元素,再将其转换成整数,并存储在新的列…

    编程 2025-04-28
  • Python移动列表元素到末尾的实现方法

    本文将详细介绍如何使用Python将列表元素移动到末尾。不同的实现方法可以达到相同的效果,本文将就其中几种方法进行详细讲解。 一、切片法 切片法可以说是最简单、最直接的方法,只需要…

    编程 2025-04-28

发表回复

登录后才能评论