您的位置:首页 > 职场人生

找出孤独的一个(IBM面试题)

2010-11-16 13:32 274 查看
小明有N双袜子,丢了一只,怎么样才能快速找到丢掉的那只袜子?
假设每双袜子都不一样,用一个7位的数字来表示,相同的袜子,代表的数字相同,例如他有两双袜子,分别用55和66这两个数字来代替表示,则表示成二进制就是110111,110111,1000010,则丢掉的那只是66号袜子。
请问怎么快速找出来丢掉的是66号袜子呢?

方法:
从头到尾遍历所有袜子的编码,然后把每一个袜子的编码相异或,最后留下来的那个就是丢掉的那只袜子的编码。
#include<iostream>  using namespace std;  void main()  {  	//假设袜子编号是55,66,77  	int sock[5]={55,55,66,77,77};  	int lose(0);  	for(int i=0;i<5;++i)  	{  		lose=lose^sock[i];  	}  	cout<<lose<<endl;  }


时间复杂度是O(N),空间复杂度是1。
这是一类寻找单身的元素的方法。前提是一对的那个要有相同的编码。
本文出自 “xiesiyuana的博客” 博客,请务必保留此出处http://seanyxie.blog.51cto.com/1319339/1375939
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐