class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param arr intvector * @param k int * @return int */ int foundOnceNumber(vector& arr, int k) { // write code here //对于本题分两种情况: //第一种就是k为偶数时,此时直接用异或运算就可求出所要的值 //第二种就是k为奇数时此时利用哈希表 if(k%2==0) { int eor=0; for(int i=0;i<arr.size();i++) { eor=eor^arr[i]; } return eor;//此时eor里面存的就是出现次数为奇数也就是为1的那个数 } else { unordered_map<int,int> hashMap;//定义一个哈希表 for(int i=0;i<arr.size();i++) { hashMap[arr[i]]++; } //遍历整个哈希表找出出现次数为1的数 auto it=hashMap.begin();//定义遍历器it while(it!=hashMap.end()) { if(it->second==1) { return it->first; } else{ ++it; } } return 0; } } };