求两无序不重复数组的交集
求两无序不重复数组的交集
//输入:a[]={5,7,8,9,1,2,3 }; b[]={2, 8,10,4,6,7};
//输出:{2,7,8}
[思路1]:
判断a数组元素值的元素是否在b中,是则输出之。
时间复杂度:O(n2)
ypedef struct HASHSET{int key; //值int nCnt; //计数}hashSet;hashSet* pSetArray = new hashSet[m*n]; //空间换时间for(int i = 0; i <m*n; i++){pSetArray[i].key = 0;pSetArray[i].nCnt = -1;}//O(n)实现输出…void hashInterSection(hashSet* pSetArray, int a[], int b[], int m, int n){for(int i = 0; i < m; i++){pSetArray[a[i]].key = a[i];pSetArray[a[i]].nCnt++;}for(int j = 0; j < n; j++){pSetArray[b[j]].key = b[j];pSetArray[b[j]].nCnt++;}for(int k = 0; k < m*n; k++){if(pSetArray[k].nCnt == 1){cout << pSetArray[k].key << "\t"; //两次累加-1+1+1=1.}}cout << endl;}
或者大家有什么更好的方法,欢迎讨论,谢谢!