腾讯2014软件开发笔试题目
来源:互联网 发布:免费微信游戏源码 编辑:程序博客网 时间:2024/06/10 02:11
简答题:
1、请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在 中所处的位置和变化。队伍可能随时有人加入和退出,当有人退出影响到用户的位置排名时需要即时反馈到用户。
2、A、B两个整数集合,设计一个算法求他们的交集,尽可能的高效。
(博主能力有限,不是所有题目都会求解,第1题不是我的擅长,这里贴出来让大家知道腾讯的考题。我的重点放在第2题上面!)
第2题 题解(个人看法,仅供参考!)
思路1:排序法
对集合A和集合B进行排序(升序,用快排,平均复杂度O(N*logN)),设置两个指针p和q,同时指向集合A和集合B的最小值,不相等的话移动*p和*q中较小值的指针,相等的话同时移动指针p和q,并且记下相等的数字,为交集的元素之一,依次操作,直到其中一个集合没有元素可比较为止。
优点:操作简单,容易实现。
缺点:使用的排序算法不当,会耗费大量的时间,比如对排好序的集合使用快排, 时间复杂度是O(N2)
这种算法是大家都能比较快速想到的办法,绝大多数时间放在了对集合的排序上,快排的平均复杂度是O(N*logN),对排好序的集合做查找操作,时间复杂度为O(N),当然这种算法肯定比遍历要快多了。
code:
#include
#include
#define M 8
#define N 5
int cmp(const void *a, const void *b)
{
int *x = (int *)a;
int *y = (int *)b;
return (*x) - (*y);
}
int main(void)
{
int A[] = {-1, 2 ,39 ,10, 6, 11, 188, 10};
int B[] = {39 ,8 , 10, 6, -1};
//对数组A和数组B进行快排
qsort(A, M, sizeof(int), cmp);
qsort(B, N, sizeof(int), cmp);
}
- 腾讯2014软件开发笔试题目
- 腾讯2014软件开发笔试题目
- 腾讯2014软件开发笔试题目
- 腾讯2014软件开发笔试题目
- 腾讯2014软件开发笔试题目
- 腾讯2014软件开发笔试题目
- 腾讯2014软件开发笔试题目
- 腾讯2014软件开发笔试题目
- 腾讯2014软件开发笔试题目
- 腾讯2014软件开发笔试题目简答题
- 腾讯2014软件开发笔试
- 【系统设计】腾讯2014软件开发笔试题目——排队系统设计
- 腾讯2014实习生软件开发笔试
- 腾讯2014实习生笔试题目
- 腾讯2014校园招聘软件后台开发类笔试题
- 腾讯2014校园招聘软件后台开发类笔试题
- 腾讯2014校园招聘软件开发类笔试试题
- 腾讯2014软件开发职位校园招聘笔试试题
- SSH限制IP登录
- Linux内核的整体架构
- C++11 range-based for loops
- UVA 11307 - Alternative Arborescence(dp)
- 模式识别 - 视频检测器(VideoDetector)项目设计
- 腾讯2014软件开发笔试题目
- 9.6 Regionserver
- mysql_fetch_row(): supplied argument is not a valid MySQL result resource的问题解决方案
- Linux设备模型(1)_基本概念
- 使用as3控制帧动画
- 选择云主机还是自家服务器做网站服务的考虑与分析
- Filezilla无法连接服务器
- jspel输出cookie信息
- Linux设备模型(2)_Kobject