描述
一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
数据范围:2≤\leq≤n≤1000\leq1000≤1000,数组中每个数的大小0≤\leq≤n≤1000000\leq1000000≤1000000。
要求:空间复杂度 O(1),时间复杂度 O(n)。
提示:输出时按非降序排列。
示例1
输入:[1,4,1,6]
返回值:[4,6]
说明:返回的结果中较小的数排在前面
示例2
输入:[1,2,3,3,2,9]
返回值:[1,9]
思路:
对于查找类的题目,可以先思考用哈希表的方式来解决,对于数组中的数字,进行哈希表查找,如果找到了,则哈希表中的元素个数+1,最后从哈希表中返回元素个数=1的键(key)。
/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param array int整型vector * @return int整型vector*/vector FindNumsAppearOnce(vector& array) {// write code heremaphash;//定义hashmap,hashmap中会自动进行升序排序vectorres;int count=1;for(int i=0;iif(hash.find(array[i])==hash.end())//未找到对于key值{hash[array[i]]=1;//将[键,值]添加进hashmap中}else{hash[array[i]]=hash[array[i]]+1;//如果找到了键,则元素value+1}// cout<< array[i]<<" "<if(hash[array[i]]==1)//判断当元素value是否=1{res.push_back(array[i]);}}sort(res.begin(),res.end());//排序输出return res;}
上一篇:人保财险总裁:整个行业的新能源车险的赔付率大概比燃油车高10个百分点以上 人保财险总裁:整个行业的新能源车险的赔付率大概比燃油车高10个百分点以上
下一篇:四连板爱丽家居:暂未知悉近期股价大涨的原因,可能存在非理性炒作 四连板爱丽家居:暂未知悉近期股价大涨的原因,可能存在非理性炒作