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/zh-tw/n/145521.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
UDZX的頭像UDZX
上一篇 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

發表回復

登錄後才能評論