Lintcode83 Single Number ||solution 题解

【题目描述】

Given3*n + 1numbers, every numbers occurs triple times except one, find it.

给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。

【题目链接】

www.lintcode.com/en/problem/single-number-ii/

【题目解析】

这题给出的元素数目为3*n + 1,因此我们很自然地想到如果有种运算能满足「三三运算」为0该有多好!对于三个相同的数来说,其相加的和必然是3的倍数,仅仅使用这一个特性还不足以将单数找出来,我们再来挖掘隐含的信息。以3为例,若使用不进位加法,三个3相加的结果为:0011+0011+0011=0033.

注意到其中的奥义了么?三个相同的数相加,不仅其和能被3整除,其二进制位上的每一位也能被3整除。因此我们只需要一个和int类型相同大小的数组记录每一位累加的结果即可。

【参考答案】

www.jiuzhang.com/solutions/single-number-ii/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容