用 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;
}

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

输出

如果我们运行以上代码,它将打印输出为:

2 3 5 7

如果我们删除重复项,输出将为 2 3 5 7。

更新于: 2021 年 2 月 5 日

295 次查看

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告