用 C++ 編寫一個程式,從給定的素數陣列中刪除重複元素。


假設我們給定一個大小為 N 的陣列,其中包含所有素數。任務是找到給定陣列中的重複元素並將其刪除。例如,

輸入 1

N = 8
arr[ ] = { 2 ,2 ,2 ,3 ,3 ,3 ,5 ,7 }

輸出

2 3 5 7

說明 − 在給定的素數陣列中,'2' 和 '3' 有些重複,刪除重複元素後,輸出將為 2 3 5 7。

輸入 2

N = 5
arr[ ] = { 3, 2, 7, 5, 5}

輸出

3 2 7 5

說明 − 在給定的素數陣列中,'5' 有些重複,刪除重複元素後,輸出將為 3 2 7 5。

解決此問題的方法

在此問題中,我們使用一個數字陣列來驗證數字是否已在陣列中訪問過。如果陣列元素未被訪問,則將其設為 '1' 並將其插入結果,否則無需插入元素。

  • 輸入大小為 N 的向量陣列及其元素。

  • 一個整型向量陣列 removeDuplicates(vector<int>&arr, int size),它接收一個數組及其大小作為輸入。

  • 一個整型陣列,我們用它來檢測和驗證當前元素是否已被訪問。如果在插入時陣列中的任何元素已被訪問(即 '1'),則我們不會將該特定元素推入向量中,否則將元素推入向量陣列。

  • 結果向量將僅包含唯一的素數。

示例

#include<bits/stdc++.h>
using namespace std;
vector<int>removeDuplicates(vector<int>&arr, int size){
   int num[100] ={0};
   vector<int> vec;
   for(int i=0;i<size;i++){
      if(num[arr[i]] ==0){
         num[arr[i]]=1;
         vec.push_back(arr[i]);
      }
   }
   return vec;
}
int main(){
   int N= 8;
   vector<int>arr={2,2,2,3,3,3,5,7};
   vector<int>answer= removeDuplicates(arr,N);
   for(int i=0;i<answer.size();i++){
      cout<<removeDuplicates(arr,N)<<endl;
   }
   return 0;
}

輸出

如果我們執行以上程式碼,它將列印輸出為:

2 3 5 7

如果我們刪除重複項,輸出將為 2 3 5 7。

更新於: 2021 年 2 月 5 日

295 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.