一、题目
1、审题
2、分析
给出一个非空数组,其中包含一个只出现一次的元素,其他的均出现3次,找出只出现一次的那个元素。
二、解答
1、思路:
采用二进制位运算符进行计算:
与 &: 1 & 1 = 1, 0 & 0 = 1 & 0 = 0;
或 | :1 | 0 = 1 | 1 = 1, 0 | 0 = 0;
非~ : ~1 = 0, ~0 = 1;
异或^ : 1 ^ 1 = 0 ^ 0 = 0, 1 ^ 0 = 1;
public int singleNumber2(int[] A) { int ones = 0, twos = 0; for (int i = 0; i < A.length; i++) { ones = (ones ^ A[i]) & ~twos; twos = (twos ^ A[i]) & ~ones; } return ones; }