百度两道面试题
2014-01-08 21:36
435 查看
1.从0到n-1中缺了一个数,找出这个数。
方案:(1)先排序再找;(2)位图的方案;(3)0到n-1的和已经知道了,则求出目前这个n-1个数的和,两者相减就能求出来; (4)沿用第三种方案,但是不用加,而用异或。
下面为方案4的代码:
2.从0到n-1中缺了两个数,找出这两个数。(这道题类似有一堆数,里面2个数出现奇数次,其他都出现偶数次,找出这两个数)
方案:(1)可以采用位图方案;(2)异或方案。
下面贴出方案2的代码:
PS:很久没写代码了,手生了。come on!
方案:(1)先排序再找;(2)位图的方案;(3)0到n-1的和已经知道了,则求出目前这个n-1个数的和,两者相减就能求出来; (4)沿用第三种方案,但是不用加,而用异或。
下面为方案4的代码:
#include <iostream> #include <exception> using namespace std; int FindMissNumber(const int arr[],int len) { if(!arr || len<=0) throw new exception("NULL Array"); int ret = 0; int temp = 0; for(int i=0; i<len; ++i){ ret ^= arr[i]; temp ^= i; } temp ^= len; //缺一个数,则最大数为len ret ^= temp; return ret; } int main() { const int SIZE = 5;//从0到5 const int arr[SIZE] = {1,2,3,4,5}; cout<<"Miss "<<FindMissNumber(arr,SIZE)<<endl; system("pause"); return 0; }
2.从0到n-1中缺了两个数,找出这两个数。(这道题类似有一堆数,里面2个数出现奇数次,其他都出现偶数次,找出这两个数)
方案:(1)可以采用位图方案;(2)异或方案。
下面贴出方案2的代码:
#include <iostream> #include <exception> using namespace std; typedef pair<int,int> Result; int FindOneInNum(int Num) //寻找一个数中最低为1的一位 { int ret = 1; while(!(Num & ret)){ ret <<= 1; } return ret; } Result FindMissNumber(const int arr[],int len) { if(!arr || len<=0) throw new exception("NULL Array"); int xorResult = 0; int i = 0; for(i=0; i<len; ++i){ xorResult ^= arr[i]; xorResult ^= i; } xorResult ^= len; xorResult ^= (len + 1); int oneBit = FindOneInNum(xorResult); int misNum1 = 0; int misNum2 = 0; for(i=0; i<len; ++i){ if(arr[i] & oneBit) misNum1 ^= arr[i]; else misNum2 ^= arr[i]; if(i & oneBit) misNum1 ^= i; else misNum2 ^= i; } if(len & oneBit) misNum1 ^= len; else misNum2 ^= len; if((len+1) & oneBit) //缺2个数,则最大数应该为len+1 misNum1 ^= (len + 1); else misNum2 ^= (len + 1); return make_pair(misNum1,misNum2); } int main() { const int SIZE = 4;//从0到5 const int arr[SIZE] = {1,2,4,5}; Result ret = FindMissNumber(arr,SIZE); cout<<"Miss "<<ret.first<<" and "<<ret.second<<endl; system("pause"); return 0; }
PS:很久没写代码了,手生了。come on!
相关文章推荐
- 房产界已上市和IPO路上的难兄难弟:房天下与房多多
- 利用百度地图提供的API做的应用
- 搜狗百度360市值齐跌:搜索引擎们陷入集体焦虑?
- 百度20年:搜索帝国的崛起、式微与重生
- 百度全面恢复网站权重,流量暴涨中
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)
- 百度 popup.js 完美修正版非常的不错 脚本之家推荐
- 百度空间的popup效果分析第1/3页
- 模仿百度三维地图的js数据分享
- 百度最近不收站分析,为什么不收录你的站
- 百度手写板代码JavaScript远程调用的实现(鼠标输入法)
- php 面试碰到过的问题 在此做下记录
- asp.net下百度的编码和解码
- asp.net 面试+笔试题目第1/2页
- 做网站要主要的百度分词技术
- asp.net 面试 笔试题目[附答案]第1/3页
- SenchaTouch2.1调用百度地图实例
- 超级推荐:艾一搜 http://www.iesool.com
- 面试:(设计,架构)
- 月光微博客