Leetcode 之 PHP 解析 (260. Single Number III)

Remember發表於2020-02-28

今天看了一篇文章,是在公眾號推送裡面的,原文的地址在

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 協議》,轉載必須註明作者和本文連結

吳親庫裡

相關文章