Part Three 习题巧解 之 3. 只出现一次的数字

Part Three 习题巧解 之 1. 判断奇偶数
Part Three 习题巧解 之 2. 两数交换

3. 只出现一次的数字

3.1 题目描述

leetcode -136. 只出现一次的数字

3.2 思路讲解

思路讲解之前,请先看清楚题意是其余数字出现了2次,请先思考一下除了一般做法的其他思路,做法尽量往位运算方面靠。

3.2.1 异或法

n^n = 0

位运算33

0^n = n

位运算34

将数组中所有的数进行异或即可得到只出现一次的数字

位运算38

原因:出现两次的数字经过异或会被变成0,而只出现一次的数字会被保留下来

3.2.2 总结

思路:抓住此题的其余数出现的次数都是两次,使得可以使用位运算解决此问题

位运算符的技巧

n^n = 0

0^n = n

3.3 代码实现
3.3.1 C语言

位运算-代码实现C语言03

3.3.2 Java

位运算-代码实现Java03


4. 写在最后

系列解题文章已经第三篇了,你是否觉得异或法有许多巧妙之处。希望看完这篇文档的你,能动手验证一下。纸上得来终觉浅,绝知此事要躬行。


5. 文档分享

如果您觉得这份关于只出现一次的数字的文档还不错,尝试点击分享这份文档给好友吧!


作者 @MythicalCreature
于2020 年 08月 17日发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值