美文网首页
领扣做题的小感悟

领扣做题的小感悟

作者: 一锁荡离魂 | 来源:发表于2019-03-21 21:41 被阅读0次

        今天做领扣题目遇到了这么一个题:

    (https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/25/)

    针对给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

    我第一时间看到这么题目想到的就是遍历,从头开始比到尾(好像好蠢的样子);但是集合中有Set,因为Set他不允许其中存在重复的值,所以最后选用了它;

    但是在提交成功了之后,我的代码运行效率只在20%以下,很低的一个名次,最高的大神采用的是异或的做法;

    代码如下:

    public static int singleNumber(int[] nums) {

        int single =0;

        for(int i =0;i < nums.length; i++){

            single = single ^ nums[i];

        }

        return single;

    }

    首先:异或有就是二进制数字相互对比,相同的则为0,不同的则为1,所以初始变量为0;0异或所有的数字都为后面的数字本身;而由于异或的特性,所有的数字被同一个数字异或两次结果不变;因此就很方便的可以解除上面的问题

    可见,基础运算真的很重要

    相关文章

      网友评论

          本文标题:领扣做题的小感悟

          本文链接:https://www.haomeiwen.com/subject/yaburqtx.html