Leetcode 之 PHP 解析 (260. Single Number III)
今天看了一篇文章,是在公众号推送里面的,原文的地址在
http://home.wangjianshuo.com/cn/20060513_ecieae.htm,写于2006年。
题目叫对贡献有激情,对回报有信心。很赞成这篇文章的观点,感兴趣的可以去看下。
其中很喜欢这几句话:当一个人还没真正意识到自己做这件事的意义时,常常为了显而易见的回报来坚持做一些事情。但很少的事可以让你立刻看到回报,于是会选择放弃。回报是贡献的影子,当一个人奔向太阳的时候,影子会跟随着你。当他追随影子的时候,它将远离太阳,远离光明,最终失去影子。
上一题链接Leetcode之PHP解析(242. Valid Anagram)
题目介绍
给定一组数字数组,只有两个元素只出现一次,其余元素都出现两次。找出只出现一次的两个元素。
题目分析
可以直接复用上一题的代码,用哈希表来做一个值和出现频率的绑定,最终返回频率为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]]++;
}```php
/**
* @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;
}
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),可以利用异或运算,留给你们实现。
本作品采用《CC 协议》,转载必须注明作者和本文链接