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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Buddy算法(雅虎全球研发中心笔试题)

1.Buddy算法 linux对空闲内存空间管理采取buddy算法,  Buddy算法: 把内存中所有页面按照2^n划分,其中n=0~5,每个内存空间按1个页面、2个页面、4个页面、8个页面、1...

深度学习算法研发工程师笔试题(百度2014校园招聘)

一、简答题 1.深度神经网络目前有哪些成功的应用?简述原因。(10分)   2.列举不同进程共享数据的方式(至少三种)。(10分)   3.对于N个样本,每个样本为D维向...

阿里巴巴2014校园招聘北京站笔试题(研发/算法/系统/测试工程师)

下面是2014年阿里巴巴集团秋季校园招聘北京地区的笔试试题,先放照片版试卷,试题博主暂时还没有做,如果您知道答案或者对某道题有特别好的想法,欢迎留言分享,非常感谢。之后会整理出文字版和参考答案,欢迎关...

百度2014校园招聘笔试题 ——深度学习算法研发工程师.

一、简答题 1.深度神经网络目前有哪些成功的应用?简述原因。(10分)   2.列举不同进程共享数据的方式(至少三种)。(10分)   3.对于N个样本,每个样本为D维向...

alibaba——研发/算法笔试题1

1、-7的二进制补码表示为()。

名企笔试:360研发工程师笔试题(挑选镇长)2017-03-14 算法爱好者

360员工桂最近申请了一个长假,一个人背着包出去自助游了。 路上,他经过了一个小镇,发现小镇的人们都围在一棵树下争吵。桂上前询问情况,得知小镇的人们正缺一个镇长, 他们希望能选一个知名又公...

alibaba——研发/算法笔试题2

3、进程阻塞的原因不包括() A、时间片切换 B、等待I/O C、进程sleep D、等待解锁 答:linux基础知识。 解析: 知识补充:

笔试题之算法初识

这段时间一直沉浸在自己的工作和学习中,一个电话打破我的宁静的生活,竟然是通知我笔试的。还发来一套笔试题,打开一看,两道题就,都是我喜欢的算法题,于是便开始准备解决这两道题,使生活回归宁静。 请看题...

白话经典算法系列之九 从归并排序到数列的逆序数对(微软笔试题)

首先来看看原题微软2010年笔试题: 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序数对。一个排列中逆序的总数就称为这个排列的逆序数。如{2,4,3...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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