leetcode137 Single Number II java
2017-03-07 16:29
459 查看
Description
Given an array of integers, every element appears three times except for one, which appears exactly once. 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)
解法
先上代码:public int singleNumber(int[] nums) { int first=0, second=0; for(int i=0; i<nums.length; i++) { first = (nums[i] ^ first) & ~second; second = (nums[i] ^ second) & ~first; } return first; }
这道题可以这么理解:
每个数字出现三次即将其清零,最后剩下出现一次的就是结果。即00(0次)>10(1次)>01(2次)>00(3次)。
first表示:第一次出现该数的时候存入first。
second表示:这个数第二次出现,将first置零,second置1。
如果数第三次出现,它会尝试存入first,可是~second为0,所以存不上,此时first,second全部置空,这个数相当于没出现。
相关文章推荐
- Java [Leetcode 137]Single Number II
- 【LeetCode-面试算法经典-Java实现】【137-Single Number II(只字出一次的数字II)】
- Java for LeetCode 137 Single Number II
- LeetCode 137 -Single Number II ( JAVA )
- LeetCode(137)Single NumberII
- leetCode: Single Number II [137]
- LeetCode137——Single Number II
- [LeetCode][Java] Single Number II
- LeetCode 137: Single Number II
- LeetCode137:Single Number II
- Single Number II leetcode java
- LeetCode(136)(137) Single Number I II
- LeetCode 137 Single Number II(只出现一次的数字 II)(*)
- Leetcode 137 Single Number II
- LeetCode 137 Single Number II 解题报告
- LeetCode(137) Single Number II
- leetcode[137]:Single Number II
- [LeetCode]137 Single Number II
- LeetCode 137 Single Number II
- leetcode-137-Single Number II