我直接发布了我在 5 分钟内在 collabedit上编写的代码(包括弄清楚算法),因此即使在效率方面完全取笑我想问问我的经验丰富的堆栈溢出算法爱好者关于问题;
基本上从数组中删除重复元素。我的方法:基本上使用std::map作为我的哈希表,如果没有分配值,则将重复数组中的每个元素添加到我们的新数组中。如果分配只是跳过。最后返回唯一的数组。这是我的代码,我在面试问题方面唯一要问的问题是我的解决方案可以更有效吗?
#include <iostream>
#include <vector>
#include <map>
using namespace std;
vector<int>uniqueArr(int arr[],int size){
std::map<int,int>storedValues;
vector<int>uniqueArr;
for(int i=0;i<size;i++){
if(storedValues[arr[i]]==0){
uniqueArr.push_back(arr[i]);
storedValues[arr[i]]=1;
}
}
return uniqueArr;
}
int main()
{
const int size=10;
int arr[size]={1,2,2,4,2,5,6,5,7,1};
vector<int>uniArr=uniqueArr(arr,size);
cout<<"Result: ";
for(int i=0;i<uniArr.size();i++) cout<<uniArr[i]<<" ";
cout<<endl;
return 0;
}