用 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。
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP