社区
C++ 语言
帖子详情
又见tencent面试题
i_noname
2005-11-05 08:32:06
有两个集合
集合A{1,7,19,21,55,100。。。}
集合B{7,22,100。。。}
两个集合都是10万个数据(已排序),要求写一个算法,判断B是不是A的子集,算法时间复杂度为Q(N)
...全文
1386
39
打赏
收藏
又见tencent面试题
有两个集合 集合A{1,7,19,21,55,100。。。} 集合B{7,22,100。。。} 两个集合都是10万个数据(已排序),要求写一个算法,判断B是不是A的子集,算法时间复杂度为Q(N)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
39 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
justrun2005
2005-11-08
打赏
举报
回复
从最大的元素开始比较,效果估计会好点。但说回来,这个题弄个o(n)复杂度的一点不难。
不过我想面试的时候,不能仅仅满足题目要求吧?
实践出真知,努力便成功
我的博客:http://blog.csdn.net/justrun2005
zl0126
2005-11-07
打赏
举报
回复
mark
skfox
2005-11-07
打赏
举报
回复
up
sinall
2005-11-07
打赏
举报
回复
呵呵,原来如彼啊。
“两个集合都是10万个数据(已排序)”
insistent_guy
2005-11-07
打赏
举报
回复
#include <iostream>
void main(){
int a[]={1,3,6,8,9,10};
int b[]={3,8,10,11};
int i=0;
int j=0;
//printf("%d",sizeof b);
while(i<sizeof b/sizeof b[0]){
printf("[%d-%d]\n",i,b[i]);
while(j<(sizeof a/sizeof a[0]) && a[j]<b[i]){
j++;
};
printf("%d\n",j);
if(a[j]>b[i]){
printf("b is not a's subset");
break;
} else if (j== sizeof a/sizeof a[0]){
printf("b is not a's subset either");
break;
}
j++;
i++;
}
if(i==sizeof b/sizeof b[0]){
printf("b is a's subset");
}
}
finix
2005-11-07
打赏
举报
回复
最差情况下的复杂度不就是O(N)嘛。遍历一遍就可以了呀,两根指针就解决了
Baku
2005-11-07
打赏
举报
回复
1 有序的集合想不出O(N)的办法只能说明基础太差
2 无序的集合想出O(N)的算法只能说明算法是错的
--------
哈哈,果然经典
楼下的写出O(log N)的算法:)
youzelin
2005-11-07
打赏
举报
回复
好玩,有趣,顶一下先
cg5353
2005-11-07
打赏
举报
回复
和KMP有点类似
batistuta8848
2005-11-07
打赏
举报
回复
学习ing
wuhandong125
2005-11-07
打赏
举报
回复
用折半查找应该可以吧~~
j805
2005-11-07
打赏
举报
回复
一看就知道不是,A中没有22.
^_^,捣个乱.
yjgx007
2005-11-07
打赏
举报
回复
我想应该是一个概率问题
kofkyo
2005-11-06
打赏
举报
回复
szws(克米帅) 的程序似乎不大对~i++应该放在条件外面吧,不然是不是a[i]<b[j]的时候下个循环i的值就是i+2了吧
luoknd
2005-11-06
打赏
举报
回复
1 有序的集合想不出O(N)的办法只能说明基础太差
2 无序的集合想出O(N)的算法只能说明算法是错的
经典
2004csharp
2005-11-06
打赏
举报
回复
szws(克米帅) 支持
yingle2000
2005-11-06
打赏
举报
回复
A和B都已经是完成排序的了,这样只要都遍历一遍就可以了,复杂度为O(N)
szws
2005-11-06
打赏
举报
回复
int i=0;j=0;
for(i=0;i<n;i++)
{
if(a[i]== b[j])
{
i++;j++
}
if(a[i]<b[j])
{
i++;
}
if(a[i]>b[j])
break;
}
szws
2005-11-06
打赏
举报
回复
int i=0;j=0;
for(i=0;i<n;i++)
{
if(a[i]== b[j])
{
i++;j++
}
if(a[i]<b[j])
{
i++;
}
if(a[i]>b[j])
break;
}
lzp729
2005-11-06
打赏
举报
回复
自己先该一下,加点效率
bool detemin (int * const &a, const long &sa, int * const &b, const long &sb)
{
if (!sb) // 高中学的,空集是任何集合的子集
return true;
for (int i = 0; i < sb; ++i)
{
static long pos = 0; // 存储当前遍历到的A的索引值
for (; (*(b+i)) != (*(a+pos)); ++pos)
{
// 如果A的当索引值比B的当前索引值小,或者A剩下的元素比B剩下的少 ...
if ( *(a+pos) < *(b+i) ) || ( (sa - pos) < (sb - i) )
return false;
}
}
return true;
}
加载更多回复(19)
tencent
.zip_
tencent
_试题_面试
【
tencent
.doc】可能是
面试题
目的详细文档,可能包含编程题、算法题、系统设计题、产品分析题、项目管理题以及公司文化、业务理解等相关问题。编程题可能涉及到C++、Java、Python等语言的基础与高级用法,算法题则...
2019最新BAT python
面试题
【标题】"2019最新BAT python
面试题
"揭示了这个压缩包文件的主要内容,即一份关于2019年百度(Baidu)、阿里巴巴(Alibaba)和腾讯(
Tencent
)这三大中国互联网巨头对Python编程语言的
面试题
目集合。这些企业通常对...
2021最新BAT大厂
面试题
合集.zip
在IT行业中,面试是每个求职者必经的关卡,特别是对于希望进入知名大厂,如百度(Baidu)、阿里巴巴(Alibaba)和腾讯(
Tencent
,简称BAT)的求职者来说,准备充分的
面试题
至关重要。这份"2021最新BAT大厂
面试题
合集...
BTAJ大厂
面试题
汇总
为了帮助有志于此的程序员朋友们,有人整理了一份《BTAJ大厂
面试题
汇总》文件,专为解决他们在求职过程中遇到的诸多困惑,如:简历石沉大海、面试准备不足、跳槽涨薪的策略、技术学习的提升路径等。 首先,这份汇总...
2019最新BAT大数据
面试题
以下是对2019年BAT大数据
面试题
的一些关键知识点的详细解析,这些知识点主要与Java编程语言相关: 1. **Java基础**:面试通常从Java的基础知识开始,如类、对象、封装、继承、多态等面向对象特性。面试官可能会询问...
C++ 语言
65,209
社区成员
250,517
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章