40.百度研发笔试题(栈、算法)

原创 2012年03月22日 17:13:27
40.百度研发笔试题(栈、算法)
引用自:zp155334877
1)设计一个栈结构,满足一下条件:min,push,pop操作的时间复杂度为O(1)。
2)一串首尾相连的珠子(m个),有N种颜色(N<=10),
设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。
并分析时间复杂度与空间复杂度。
代码见下:
最短摘要的生成http://blog.csdn.net/v_july_v/article/details/6890054
3)设计一个系统处理词语搭配问题,比如说 中国 和人民可以搭配,
则中国人民 人民中国都有效。要求:
  *系统每秒的查询数量可能上千次;
  *词语的数量级为10W;
  *每个词至多可以与1W个词搭配
当用户输入中国人民的时候,要求返回与这个搭配词组相关的信息。


方案:
步骤:
1. 分词.
2. 判断是否搭配


一。分词的判断
如果不考虑歧义,可以用wm基于shift表的词表匹配方法,在O(length(input))时间内完成分词。
如果考虑歧义,用专用分词系统。时间复杂度待查。
暂时不考虑歧义。
wm表占用内存大概5M以内.


二。判断是否搭配
用二维向量表示10w个词之间的搭配信息。每个词-词搭配信息占用一个bit,共 10w * 10w bit,大概


160MByte.
分词完成后,可以在O(1)时间内完成搭配信息的查询。


上述处理在普通PC(AMD 双核2.5G Hz,2G内存)上可以在一百-五百微秒时间范围内完成,即每秒至少可以


处理两千次查询。
参考:http://blog.sina.com.cn/s/blog_63ce05ca0100u2b5.html










//coder:Lee,20120322


#include<iostream>
#include<cassert>
using namespace std;
struct Index
{
int front;
int behind;
};
Index ShortestSectionWithFullColors(int *A,int nLength,int nColors)
{
Index index;
int pBegin=0;
int pEnd=0;
int *hash=new int[nColors+1];
int nTargetLen=0;
int nShortestLen=nLength+1;
for (int i=0;i<nColors+1;i++)
{
hash[i]=0;
}
while(true)
{
while(nTargetLen!=nColors)
{
hash[A[pEnd]]++;
if(hash[A[pEnd]]==1)
nTargetLen++;
pEnd++;
if(pEnd>=nLength)
pEnd=0;
}
while(nTargetLen==nColors)
{
if((pEnd-pBegin+nLength)%nLength<nShortestLen)
{
nShortestLen=(pEnd-pBegin+nLength)%nLength;
index.front=pEnd;
index.behind=pBegin;
}
hash[A[pBegin]]--;
if(hash[A[pBegin]]==0)
nTargetLen--;
pBegin++;
if(pBegin>=nLength)
break;
}
if(pBegin>=nLength)
break;
}
return index;
}
int main()
{
int A[]={1,2,1,2,1,1,3,1,1,3};
int nLen=sizeof(A)/sizeof(int);
Index index=ShortestSectionWithFullColors(A,nLen,3);
for (int i=index.behind;i!=index.front;)
{
cout<<A[i]<<" ";
i++;
i=(i+nLen)%nLen;
}
return 0;
}

2013豆瓣校园招聘研发类笔试题

2013豆瓣校园招聘研发类笔试题 转载请标明出处,原文地址: 1、将一个递归算法改为对应的非递归算法时,通常需要使用() A、优先队列   B、队列     C、循环队列     D、栈 2、爸爸、...
  • Hackbuteer1
  • Hackbuteer1
  • 2013年09月06日 19:35
  • 12952

滴滴出行2016研发工程师笔试题--排序算法空间

来自:滴滴出行2016研发工程师笔试题 题目:下述几种排序方法中,要求内存最大的是() A. 快速排序 B. 插入排序 C. 选择排序 D. 归并排序下面是分析: A. 快速排序和归并排序...
  • BSCHN123
  • BSCHN123
  • 2017年03月30日 13:47
  • 555

网易游戏开发面试题分享

原贴地址:http://www.zhihu.com/question/30034222 1. inline关键字是做什么用的?inline关键字在什么情况下会展开失败? sizeof一个空类是多...
  • patkritLee
  • patkritLee
  • 2016年09月22日 15:16
  • 3786

今日头条春招研发笔试题解密

今日头条 2017 研发岗实习生招聘,真的好难好难,转了头条官微的题解。。。。只是想找一个实习岗。Prob 1. 找出函数的最宽尖峰正确率:1149 / 5371题意:求给定数列 A 中先升后降的最长...
  • qq_24942951
  • qq_24942951
  • 2017年03月31日 23:45
  • 474

笔试题目——研发工程师笔试题

网易2016 研发工程师笔试题
  • Linux_ever
  • Linux_ever
  • 2016年03月20日 20:27
  • 1226

20160909阿里校招数据研发工程师笔试总结

9.9晚上有幸参加了阿里的数据研发工程师在线笔试,开阔了我的视野,也给我一个很大的提醒,学艺不精,权当是一次学习了吧。不管怎么样,非常感谢该团队。因考试要求不可泄露相关信息,故在此只能将题目的大致要求...
  • hjnth
  • hjnth
  • 2016年09月11日 15:42
  • 2133

2015百度笔试题(软件)

一、简答题 1.请简述TCP-IP3次握手及4次挥手过程。并解释为何关闭连接需要4次挥手。(10分)...
  • tianya_team
  • tianya_team
  • 2016年02月22日 17:11
  • 787

c++工程师笔试常见题目总结

最近参加了好多场c/c++笔试,感觉题型就那些,今天把这些题型总结总结供大家参考1.动态库和静态库的区别 静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的...
  • j_shui
  • j_shui
  • 2016年03月06日 22:04
  • 363

拼多多2018校招编程题

[编程题] 最大乘积 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)  输入描述: 无序整数数组A[n] 输出...
  • wuxiaosi808
  • wuxiaosi808
  • 2017年08月07日 17:47
  • 1532

C/C++研发工程师 面试题

找工作真的是一个非常痛苦的过程,本人是一所985院校的硕士研究生,总是听师兄师姐说,放心吧,不会找不到工作的,在经历了找工作这一过程之后,我真的真的很想告诉大家,就算你的学校有多好多牛逼,在你能力不过...
  • u011138780
  • u011138780
  • 2016年10月17日 21:49
  • 2585
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:40.百度研发笔试题(栈、算法)
举报原因:
原因补充:

(最多只允许输入30个字)