关于腾讯的一道找抽题;-)

pongba 2005-11-14 05:48:49
没事凑个热闹,看这两天贴面试题的忒多,刚从一个跟贴里面看到腾讯的又一个典型找抽题,题目还算典型,也很找抽,不过我想知道另一个问题,你能否说出哪些找抽的地方要用到这个算法?

题目如下,相信很多人都见过了,但你想过这种算法在哪些地方可能有用吗?请告诉我;-)

有两个集合
集合A{1,7,19,21,55,100。。。}
集合B{7,22,100。。。}
两个集合都是10万个数据(已排序),要求写一个算法,判断B是不是A的子集,算法时间复杂度为Q(N)
...全文
1438 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
quanbaoxiao 2006-03-12
  • 打赏
  • 举报
回复
mark
manmanzhen 2005-11-15
  • 打赏
  • 举报
回复
理论与实际的争论~~逃跑。。。
yeaky 2005-11-15
  • 打赏
  • 举报
回复
SB楼主,
你能告诉我“哥德吧赫猜想”在哪些地方可能有用吗?谅你也答不出来,就你这种水平!!
照你这么说,我们根本不用去搞什么基础理论研究了!!!
huangjunhualy 2005-11-15
  • 打赏
  • 举报
回复
template <typename T> void CheckSubUnion(T a[], T b[], int m, int n)
/* m , n 分别微a[],b[]的长度 */
{
int i = 0;
int j = 0;
int count = 0;
while ((10 - i) >= (5 - j) && i < 10 && j < 5)
{
if (a[i] < b[j])
{
i++;
}
else if (a[i] > b[j])
{
j ++;
}
else
{
count ++;
i++;
j++;
}
}

if (count == n)
{
cout <<"b[] is a sub Union of a[]"<<endl;
}
else
{
cout <<"b[] is not a sub Union of a[]"<<endl;
}
}
cyouyou 2005-11-15
  • 打赏
  • 举报
回复
Featured(我握着爱情的门票静静排队……)

如果两个集合都是10万个数据,并且都已经排序,而且要求B是A的子集,
那么显然B=A,且每一个元素对应相等。
根据此原则,白痴也能写出来啊……

--------------------
进来赞一下这个




pongba 2005-11-15
  • 打赏
  • 举报
回复
我没有得到我要的答案。故该问题结贴。
yulin001122 2005-11-15
  • 打赏
  • 举报
回复
比如{0,1} == {0,1,1}??
WuOu 2005-11-15
  • 打赏
  • 举报
回复
Mark.
vxhelp 2005-11-15
  • 打赏
  • 举报
回复
哈哈,其实这个题很简单,


不知道面试通过能给多少银子?
pro_love 2005-11-15
  • 打赏
  • 举报
回复
子集的元素个数是不是<=该集合啊
还有就是子集存在父集没有的元素 何解
Major_C 2005-11-14
  • 打赏
  • 举报
回复
数字重复的情况...
集合的基本性质之一是元素互异性
QuickKeyBoard 2005-11-14
  • 打赏
  • 举报
回复
比较正常啊,就是O(n)的算法:从开始的两个开始比较就是了。
真正找抽的是那些要计算什么(i++)+(++i--)之类的东西。
vc_asm 2005-11-14
  • 打赏
  • 举报
回复
单纯的找抽,呵呵
拿b中最小的在A中比,比上了,再从b中取次小的和A中当前位置的下一个比,。。。
如果b中有一个不在a中,那就....否则....
好像有个字符串比较中有类似的算法滴

lei001 2005-11-14
  • 打赏
  • 举报
回复
/*
* a[]:全集;
* b[]子集
* m,全集元素个数
* n,子集元素个数
* 返回1,表示b是a的子集;返回-1,表示b不是a的子集
*/
int findsub(int a[],int b[],int m,int n)
{
int i,j;,
j=0;
if(m<n)return -1;
for(i=0;i<n;i++)
{
while(b[i]!=a[j])
{
j++;
if(j==m)
goto result;
}
j++;
}
result:
if(j<m)
{
return 1;
}
else if((j==m)&&(i==n))
{
return 1;
}
else
{
return -1;
}

}
请大家检视!
xiaonian_3654 2005-11-14
  • 打赏
  • 举报
回复
这个题目的复杂度不高的,为什么哪? 两个序列都是已排序的,
复杂度只有O(n)而已
sdhp 2005-11-14
  • 打赏
  • 举报
回复
中国有多少理发师?


是我就直接说中国只有两个理发师,一个是男理发师,一个是女理发师
yulin001122 2005-11-14
  • 打赏
  • 举报
回复
有没有考虑数字重复的情况 用11比较错到那里去都不知道了。饿。.
yulin001122 2005-11-14
  • 打赏
  • 举报
回复
真的这么简单吗?? 我觉得在这里起码有一半的人写出来会是错误的。
winhkey 2005-11-14
  • 打赏
  • 举报
回复
中国有多少理发师?


是我就直接说不知道了嘿嘿嘿
pongba 2005-11-14
  • 打赏
  • 举报
回复
呵呵,你怎么不说理发店的数目*5;-)
加载更多回复(17)

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧