登录
|
注册
公司
标签
文章
搜索
经典指数
2016
数组
类别
公司
职位
年份
其他
添加
原因
删除
2537
浏览数
0
收藏数
数组A由1000W个随机正整数(int)组成,设计算法,给定整数n,在A中找出符合如下等式:n=a+b的a和b,说明算法思路以及时间复杂度是多少?
还没有评论
分享到:
举报
纠错
0
/
512字
选择纠错区域
题目内容有错
题目标签有错
提交纠错
切换
提交评论
请先
登录
后评论.
1 个答案
0
0
方法一、数组排序,二分 1000w数字存到数组中,需要的地址空间为1000w*4byte=4w kb =40 Mb。这个容量是可以接受的。 将数组快速排序,时间复杂度n*logn 对任给的n n=a+b a,b组合无非是 0,n 1,n-1 ... n/2-1,n/2+1 一共有n个数组需要找出来以确定是否存在这一组。 二分查找n次,时间复杂度为nlog(n) 所以总时间复杂度为O(nlog(n)) 方法二、哈希表 把每个数字都插入到哈希表中,时间复杂度n 确定每组a,b是否存在: 0,n 1,n-1 ... n/2-1,n/2+1 时间复杂度为n*o(1) 总时间复杂度为O(n) 搜到第三种解法不知道对不对: 直接申请一个大小为N的数组,只要40M空间,然后数组中每一个元素对N取余(当然如果比N还大就直接舍弃),取余的值就放在对于数组下标中。比方N为10,元素8,就放数组第8个元素中,然后看看数组第二个元素有没有值就好了。所以复杂度为o(n) ref: http://group.jobbole.com/13848/
还没有评论
举报
切换
提交评论
请先
登录
后评论.
撰写答案
提交回答
通往牛逼的路上,请先登录!
扫描后移动端查看本题
我也分享一个题目
×
登录
注册
找回密码
记住登录
登录
快速注册
直接第三方登录
×
保存答案