2020-02-29 吴亲库里 库里的深夜食堂
给定一组数字数组,只有两个元素只出现一次,其余元素都出现两次。找出只出现一次的两个元素。

可以直接复用上一题的代码,用哈希表来做一个值和出现频率的绑定,最终返回频率为1的数。
/**
* @param Integer[] $nums
* @return Integer[]
*/
function singleNumber($nums) {
$res=[];
$data=[];
for($i=0;$i<count($nums);$i++){
if(!$data[$nums[$i]]) $data[$nums[$i]]=0;
$data[$nums[$i]]++;
}
return array_keys($data,1,false);
//或者遍历
// foreach($data as $key=>$value){
// if($data[$key]==1) $res[]=$key;
// if(count($res)==2) break;
// }
// return $res;
}
上述代码时间复杂度O(n),空间复杂度O(n),时间复杂度不能再进行优化了,空间复杂度可以优化为O(1),可以利用异或运算,留给你们实现。
