LeetCode Java刷题笔记—136. 只出现一次的数字
Posted 刘Java
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Java刷题笔记—136. 只出现一次的数字相关的知识,希望对你有一定的参考价值。
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
简单难度。这道题要求线性时间复杂度,而且不需要额外的空间,此时我们可以考虑位运算。我们需要知道关于异或运算的两个规律:
- 0与任何数异或结果为任何数:a=0a=a0
- 两个相同的数异或结果为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刷题100天—136. 只出现一次的数字(数组)—day73