今天看了一篇文章,是在公眾號推送裡面的,原文的地址在
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 協議》,轉載必須註明作者和本文連結