用 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。
广告