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 协议》,转载必须注明作者和本文链接
吴亲库里
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
46
粉丝
117
喜欢
493
收藏
604
排名:177
访问:5.5 万
私信
所有博文
社区赞助商