【发布时间】:2012-06-09 22:48:06
【问题描述】:
我在 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;
}
【问题讨论】:
-
这个问题是专门要求你用C++做的,还是你自己选的?
-
@James 这是我觉得最舒服的语言。
标签: c++ performance algorithm