领扣做题的小感悟

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

(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异或所有的数字都为后面的数字本身;而由于异或的特性,所有的数字被同一个数字异或两次结果不变;因此就很方便的可以解除上面的问题

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • <center>#1 Two Sum</center> link Description:Given an arr...
    铛铛铛clark阅读 6,669评论 0 3
  • 排序算法几种分类方式: 1,稳定排序和不稳定排序 如果a==b, 当排序之前a在b的前面,排序后,a仍然在b...
    fly_ever阅读 3,211评论 0 0
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,105评论 0 2
  • 转载自:https://egoistk.github.io/2016/09/10/Java%E6%8E%92%E5...
    chad_it阅读 4,576评论 0 18
  • 忽然在孩子'学校群看到一篇文章,娘在家在。看的心里不是滋味,不知道是不是因为年龄的关系,一看到有关父母的文章都会激...
    杨加利阅读 4,149评论 0 0

友情链接更多精彩内容