找出单身狗java_【 面试算法5分钟 - 找出单身狗】

食堂规定,在窗口点餐后你会获得一个号码。

但是有的时候会有情侣一起来吃饭,这个时候大妈会给这两个人相同的号码。

一天你来到食堂,因为你记得妈妈告诉你,只有名字越长的东西越会带来好运,于是你开心的点了一份“超级无敌变态辣麻辣小香锅”。

当你回头的时候你发现运气果然非常的棒!

今天食堂的妹子好像比以前更多了,并且男女比例也比平常平衡很多。作为一个卓越的理工男,眨眨眼就发现这里有n个妹子和n+1个汉子。正当你被自己过人的数数能力折服的时候,你好像发现了有什么蹊跷。。。

没错!你就是那唯一的单身狗!

一瞬间你突然想把那份超长名字的超级无敌变态辣的麻辣小香锅退掉,并再也不相信妈妈的话了。

然而你看到大妈已经在准备你的菜,于是又平静了下来,这种事情你早就习惯了。。。

但是,大妈作为食堂的天眼通,早就洞悉了你的悲惨境遇,并预测到你的单身狗生涯还有很远要走。决定给你多加点肉,人间有真情!

但是大妈忘记了你的号码。。。。。

现在摆在大妈面前的是N个数字,这些数字中只有一个出现了一次,就是你的号码。其余的均出现了两次。那么怎么才能最快的找出哪个号码是你的呢?!!!

下期公布答案!

(这里是下期)

利用异或操作!

异或运算的性质就是:相同为0,不同为1。

因此 2^2 = 0, 3^2^2 = 3

所以只要将所有的数字异或起来就得到了那个单身狗的号码。!

你可能感兴趣的:(找出单身狗java)