0%

leetcode 137 Solution

代码解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.demo.s137;

/**
* 只出现一次的数字 II
* 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
*
*/
public class Solution {
public int singleNumber(int[] nums) {
//最终的结果值
int res = 0;
//int类型有32位,统计每一位1的个数
for (int i = 0; i < 32; i++) {
//统计第i位中1的个数
int oneCount = 0;
for (int j = 0; j < nums.length; j++) {
oneCount += (nums[j] >>> i) & 1;
}
//如果1的个数不是3的倍数,说明那个只出现一次的数字
//的二进制位中在这一位是1
if (oneCount % 3 == 1)
res |= 1 << i;
}
return res;
}
}