Given an array of integers, every element appears twice except for one. Find that single one.

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

本来是一道非常简单的题,但是由于加上了时间复杂度必须是O(n),并且空间复杂度为O(1),使得不能用排序方法,也不能使用map数据结构。那么只能另辟蹊径,需要用位操作Bit Operation来解此题,这个解法如果让我想,肯定想不出来,因为谁会想到用逻辑异或来解题呢。逻辑异或的真值表为:

异或运算的真值表如下:

A B
F F F
F T T
T F T
T T F

由于数字在计算机是以二进制存储的,每位上都是0或1,如果我们把两个相同的数字异或,0与0异或是0,1与1异或也是0,那么我们会得到0。根据这个特点,我们把数组中所有的数字都异或起来,则每对相同的数字都会得0,然后最后剩下来的数字就是那个只有1次的数字。这个方法确实很赞,但是感觉一般人不会忘异或上想,绝对是为CS专业的同学设计的好题呀,赞一个~~

C++ 解法:

class Solution {
public:int singleNumber(vector<int>& nums) {int res = 0;for (auto num : nums) res ^= num;return res;}
};

Java 解法:

public class Solution {public int singleNumber(int[] nums) {int res = 0;for (int num : nums) res ^= num;return res;}
}

LeetCode All in One 题目讲解汇总(持续更新中...)

[LeetCode] Single Number 单独的数字相关推荐

  1. [LintCode] Single Number 单独的数字

    Given 2*n + 1 numbers, every numbers occurs twice except one, find it. Have you met this question in ...

  2. LeetCode Single Number I / II / III

    [1]LeetCode 136 Single Number 题意:奇数个数,其中除了一个数只出现一次外,其他数都是成对出现,比如1,2,2,3,3...,求出该单个数. 解法:容易想到异或的性质,两个 ...

  3. [LeetCode]Single Number II

    今天室友推荐了一道LeetCode上面的练习题Single Number II,题目大概的意思是有一个整形的数组,里面只有一个数是出现一次的,其他的数都出现了三次,然后让把这个数找出来. 第一眼看到这 ...

  4. leetcode - Single Number

    今天开始刷leetcode上的题,争取校招前刷过一遍,从AC率最高的题目开始刷,不废话了,看题 题目:Single Number Given an array of integers, every e ...

  5. [Leetcode] single number ii 找单个数

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  6. leetcode Single Number python

    Single Number Given an array of integers, every element appears twice except for one. Find that sing ...

  7. LeetCode Single Number III(位操作)

    问题:给出一个数组,有两个数只出现一次,其它都出现两次. 思路:先对数组求异或,得到两个数异域的结果.然后确定差异的最低位.再将数组与这个差异位作异域,得到其中的一个数.再与异域结果异域后即得到另外一 ...

  8. LeetCode Single Number II(位操作)

    问题:给出一个数组,其中只有一个数出现一次,其它数出现三次,找出出现一次的数 思路: 1.统计每位出现的次数,如果mod 3等于1,则将该位置为1,最后即得到出现一次的数. 2.使用三个变量来分别来表 ...

  9. [Leetcode] single number 找单个数

    Given an array of integers, every element appears twice except for one. Find that single one. Note:  ...

最新文章

  1. 一句话告诉你们什么是大数据
  2. python飞机大战源代码-python版飞机大战代码分享
  3. 005_JSONArray对象静态方法
  4. 【计算机网络(微课版)】第1章 概述 课后习题及答案
  5. 实现定时中断_EPIT 定时器,仅需做到如下几步,即可轻松配置使用
  6. redisson的锁的类型_你知道吗?大家都在使用Redisson实现分布式锁了!!
  7. 浅析Numpy.genfromtxt及File I/O讲解
  8. JAVA入门级教学之(局部内部类)
  9. 反汇编基础-加法的求值过程(各种类型)
  10. Tomcat和myeclipse的相关操作以及myeclipse的激活方法
  11. 【hadoop】hadoop 安装 kerberos
  12. LINE:不得不看的大规模信息网络嵌入
  13. BindFlags的作用
  14. C# HttpClient Multipart 上传文件
  15. 沿海当地平均海面与85面高程关系
  16. Awesome Crowd Counting
  17. JS undefined报错
  18. win7如何解除锁定计算机,Win7电脑键盘数字键被锁了怎么解锁(图文)
  19. 【PPT】画三维立体块
  20. python 证书-在python使用SSL(HTTPS)

热门文章

  1. “正则表达式”应当称为“规则表达式”
  2. 实现简单的网页间的跳转
  3. scrapy-splash抓取动态数据例子六
  4. springboot+mongodb
  5. Servlet实现的三种方法
  6. 初学 Delphi 嵌入汇编[1] - 汇编语言与机器语言
  7. C#自定义控件一下拉颜色框
  8. java集合对象声明_Java基础————集合类
  9. Python高阶函数(map,reduce,filter)
  10. 【十大经典排序算法】java实现--冒泡排序(1)