私は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;
}