LeetCode Java刷题笔记—136. 只出现一次的数字

Posted 刘Java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Java刷题笔记—136. 只出现一次的数字相关的知识,希望对你有一定的参考价值。

136. 只出现一次的数字

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

简单难度。这道题要求线性时间复杂度,而且不需要额外的空间,此时我们可以考虑位运算。我们需要知道关于异或运算的两个规律:

  1. 0与任何数异或结果为任何数:a=0a=a0
  2. 两个相同的数异或结果为0:0=a^a

那么答案已经呼之欲出了,我们依次让元素相互异或,其他元素由于都出现了两次那么异或结果都为0,最后剩下的必定就是只出现了一次的元素。

public int singleNumber( int[] nums )

   int result = 0;
   for( int num : nums )
      //依次异或
      result ^= num;
   
   //最后剩下只出现了一次的元素
   return result;

以上是关于LeetCode Java刷题笔记—136. 只出现一次的数字的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode刷题136-简单-只出现一次的数字

Leetcode刷题100天—136. 只出现一次的数字(数组)—day73

Leetcode刷题100天—136. 只出现一次的数字(数组)—day73

LeetCode Java刷题笔记汇总

LeetCode Java刷题笔记—226. 翻转二叉树

LeetCode Java刷题笔记—206. 反转链表