Description:
Given a non-empty 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?
Example 1:
Input: [2,2,3,2]
Output: 3
Example 2:
Input: [0,1,0,1,0,1,99]
Output: 99
思路:
本题在Single Number的基础上略微改变,仍然可以按照方法一求解,对于方法二,只需要改成3*(a+b+c) - (a+b+a+b+a+b+c) = 2 * c,依然可以使用。但由于题目在线性复杂度的要求上提出不使用额外空间,因此重点在于使用位运算的第三种方法。
下面重新分析:
(注:以下方法非本人原创,但许多解释过于简单,有些涉及到真值表或卡诺图的化简,这里尽量用最简单的方法解释)
在原题中,我们采用一个变量