[LeetCode]260. Single Number III
2017-01-31 19:28
429 查看
https://leetcode.com/problems/single-number-iii/
找出正好出现一次的两个数,其他数字都是正好出现两次
先全部异或,然后所得结果里找到二进制中某一位是一的,再把数组中所有该位是一的做异或,得到n1;该位不是一的做异或,得到n2。
public class Solution {
public int[] singleNumber(int[] nums) {
int all = 0;
for (int num : nums) {
all ^= num;
}
int index = 0;
while (((1 << index) & all) == 0) {
index++;
}
int n1 = 0;
for (int num : nums) {
if (((1 << index) & num) == 0) {
n1 ^= num;
}
}
int n2 = 0;
for (int num : nums) {
if (((1 << index) & num) != 0) {
n2 ^= num;
}
}
int[] res = {n1, n2};
return res;
}
}
找出正好出现一次的两个数,其他数字都是正好出现两次
先全部异或,然后所得结果里找到二进制中某一位是一的,再把数组中所有该位是一的做异或,得到n1;该位不是一的做异或,得到n2。
public class Solution {
public int[] singleNumber(int[] nums) {
int all = 0;
for (int num : nums) {
all ^= num;
}
int index = 0;
while (((1 << index) & all) == 0) {
index++;
}
int n1 = 0;
for (int num : nums) {
if (((1 << index) & num) == 0) {
n1 ^= num;
}
}
int n2 = 0;
for (int num : nums) {
if (((1 << index) & num) != 0) {
n2 ^= num;
}
}
int[] res = {n1, n2};
return res;
}
}
相关文章推荐
- [leetcode] 260. Single Number III
- leetcode 260.Single Number III
- LeetCode 260. Single Number III 题解(C++)
- LeetCode--137. Single Number II && 260. Single Number III之暴力搜法
- LeetCode 260. Single Number III
- 【LeetCode】260. Single Number III 解题报告(Python)
- [Leetcode] 260. Single Number III 解题报告
- leetcode-java-260. Single Number III
- [leetcode] 260.Single Number III
- [leetcode]--260. Single Number III
- leetcode_middle_7_260. Single Number III
- 260.[LeetCode]Single Number III
- leetcode-260. Single Number III
- Leetcode 260. Single Number III
- LeetCode笔记:260. Single Number III
- LeetCode 260. Single Number III
- [LeetCode] 260. Single Number III(位操作)
- 位操作 leetcode 260. Single Number III
- 【LeetCode】 260. Single Number III
- [LeetCode] 260. Single Number III(位操作)