社区
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)
...全文
1365
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)
Google, Baidu,
Tencent
面试
题
总结
Google,Baidu,腾讯近期
面试
题
总结,侧重于海量数据的处理方法,
面试
利器,实用有效!
前端大厂最新
面试
题
-
tencent
.docx
前端大厂最新
面试
题
-
tencent
AI TIME PhD:初探图神经网络在分子成药性估计中的应用
在本次talk中,我们将探索图神经网络(Graph Neural Networks)在分子图(Molecular Graph)建模中的应用。具体来说,我们将介绍我们开源的一个全新的分子数据库(alchemy.
tencent
.com)用以评估图神经网络的性能,并讨论这样的数据库和图神经网络算法如何帮助药物设计。
tencent
.zip_
tencent
_试
题
_
面试
腾讯
面试
试
题
,38页,希望对求职人士游泳
leetcode答案-leetcode-
tencent
:leetcode
面试
-腾讯专
题
做
题
记录
leetcode 答案 leetcode-
tencent
leetcode
面试
-腾讯专
题
做
题
记录 LeetCode腾讯专
题
地址, 小目标 每天至少一道算法
题
每天更新README学习markdown写法(不会真的有人不会markdown吧,不会吧,不会吧) 先这样,有什么想到的再说 1月20日 正式开始,差点就犯懒不做(这可太懒了),做了个非常简单的两数之和,就当熟悉vector的用法了, 毕竟原来基本只用C,STL还是不太熟 1月21日 寻找两个正序数组的中位数 原本想从两个数组的第一个数开始向后比较,比较到中位数的位置直接输出值,但是这 样要考虑的情况比较多就干脆先合到一个大数组里面然后再求中位数了。 最长回文子串 没啥想说的,终于有点写
题
的感觉了。 字符串转换整数 (atoi) 没什么难度,不过leetcode上跑出来的结果还是挺高兴的,记录一下 执行用时:0 ms, 在所有 C++ 提交中击败了100.00%的用户 内存消耗:6.7 MB, 在所有 C++ 提交中击败了99.10%的用户 1月22日 身体不舒服,鸽一天 1月23日 最长公共前缀,没有难度,就是要注意各种特殊情况
C++ 语言
64,684
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章