Skip to content

Latest commit

 

History

History
60 lines (49 loc) · 1.82 KB

136.md

File metadata and controls

60 lines (49 loc) · 1.82 KB

✏️Leetcode基础刷题之(136. Single Number)

2019-03-06 吴亲库里 库里的深夜食堂


✏️描述

给一个不为空的数组,除了一个元素外,每一个元素都会出现两次,找出那个出现一次的数.


✏️题目实例

✏️题目分析

我的思路(好吧我第一次使用的是暴力破解法,这是一种超级常规的思想,看看就好,他的运行效率会很低,不推荐这种,既然我们刷题了,当然要用更优的解法做题)

      /**
         * @param Integer[] $nums
         * @return Integer
         */
        function singleNumber($nums) {
            $data=[];
           foreach($nums  as $num) {
               if(!in_array($num,$data)) {
                   array_push($data,$num);
               }else{
                   $index=array_search($num,$data);
                   array_splice($data,$index,1);
               }
           }
            return $data[0];
        }

我们可以通过运算符异或(^)来进行比较,当^左边等于右边时,结果为默认值0,当^的左边不等于右边时,结果返回默认值1.所以我们可以将所有的位异或找出唯一的值.

 /**
     * @param Integer[] $nums
     * @return Integer
     */
    function singleNumber($nums) {
        $res=0;
        for($i=0;$i<count($nums);$i++) {
            $res ^=$nums[$i];
        }
        return $res;
    }

联系