給定兩個列表(不一定排序),找到那些列表的交集的最有效的非遞歸算法是什么?
高效列表交集算法
墨色風雨
2019-10-17 12:47:15
TA貢獻1875條經(jīng)驗 獲得超5個贊
您可以將第一個列表的所有元素放入哈希集中。然后,迭代第二個,并針對其每個元素,檢查哈希以查看其是否存在于第一個列表中。如果是這樣,請將其輸出為相交的元素。
TA貢獻2037條經(jīng)驗 獲得超6個贊
在C ++中,可以使用STL映射嘗試以下方法
vector<int> set_intersection(vector<int> s1, vector<int> s2){
vector<int> ret;
map<int, bool> store;
for(int i=0; i < s1.size(); i++){
store[s1[i]] = true;
}
for(int i=0; i < s2.size(); i++){
if(store[s2[i]] == true) ret.push_back(s2[i]);
}
return ret;
}
舉報