LeetCode 136. Single Number 解题报告

136. Single Number

My Submissions
Question
Total Accepted: 113794  Total Submissions: 234460  Difficulty: Medium

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?

Subscribe to see which companies asked this question

Hide Tags
  Hash Table Bit Manipulation
Hide Similar Problems
  (M) Single Number II (M) Single Number III (M) Missing Number (H) Find the Duplicate Number
Have you met this question in a real interview? 
Yes
 
No

Discuss


    题目要求线性时间复杂度,并且不需要额外的存储空间。这里利用异或运算性质求解

1、交换律

2、结合律(即(a^b)^c == a^(b^c))

3、对于任何数x,都有x^x=0,x^0=x

4、自反性 A XOR B XOR B = A xor  0 = A

    AC代码如下:

public class SingleNumber {

	public int singleNumber(int[] nums) {
		int a = nums[0];
		for (int i = 1; i < nums.length; i++) {
			a ^= nums[i];
		}
		return a;
	}
}


你可能感兴趣的:(LeetCode 136. Single Number 解题报告)