LeetCode --Single Number
2015-01-09 16:23
459 查看
Single Number:
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?
题目大概意思是在一个整型数组中,找到唯一一个出现一次的元素,其他的都出现两次。要求是时间复杂度为线性,最好不使用额外空间。
按位异或运算符^
参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0
例如:10100001^00010001=10110000
0^0=0,0^1=1 0异或任何数=任何数
1^0=1,1^1=0 1异或任何数=任何数取反
任何数异或自己=把自己置0
(1)按位异或可以用来使某些特定的位翻转,如对数10100001的第2位和第3位翻转,可以将数与00000110进行按位异或运算。 10100001^00000110=10100111 //1010 0001 ^ 0x06 = 1010 0001 ^ 6
(2)通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。
例如交换两个整数a,b的值,可通过下列语句实现:
a=10100001,b=00000110
a=a^b; //a=10100111
b=b^a; //b=10100001
a=a^b; //a=00000110
(3)异或运算符的特点是:数a两次异或同一个数b(a=a^b^b)仍然为原值a.
最终解决方法代码如下:
Single Number:
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?
题目大概意思是在一个整型数组中,找到唯一一个出现一次的元素,其他的都出现两次。要求是时间复杂度为线性,最好不使用额外空间。
按位异或运算符^
参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0
例如:10100001^00010001=10110000
0^0=0,0^1=1 0异或任何数=任何数
1^0=1,1^1=0 1异或任何数=任何数取反
任何数异或自己=把自己置0
(1)按位异或可以用来使某些特定的位翻转,如对数10100001的第2位和第3位翻转,可以将数与00000110进行按位异或运算。 10100001^00000110=10100111 //1010 0001 ^ 0x06 = 1010 0001 ^ 6
(2)通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。
例如交换两个整数a,b的值,可通过下列语句实现:
a=10100001,b=00000110
a=a^b; //a=10100111
b=b^a; //b=10100001
a=a^b; //a=00000110
(3)异或运算符的特点是:数a两次异或同一个数b(a=a^b^b)仍然为原值a.
最终解决方法代码如下:
public static int singleNumber(int[] A) { int x=0; for(int a: A){ x = x ^ a; } return x; }
相关文章推荐
- leetcode: Single Number (II)
- LeetCode || Single Number
- LeetCode笔记:136. Single Number
- LeetCode - Single Number
- [LeetCode] Single Number
- [LeetCode]Single Number
- LeetCode--136. Single Number
- Leetcode题解14 136. Single Number
- leetcode 136. Single Number 题解
- LeetCode - Single Number
- LeetCode之“散列表”:Single Number
- [leetcode] 136. Single Number
- LeetCode - Single Number
- [LeetCode]Single Number
- [LeetCode] Single Number
- [leetcode]: 136. Single Number
- Leetcode刷题(Single Number)
- leetcode-136 Single Number
- leetcode-Single Number
- LeetCode_136. Single Number