首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
C/C++
新手乐园
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
一道面试题
[无满意答案结贴]
加为好友
发送私信
在线聊天
nandizhu
楠地主
等级:
可用分等级:
贫农
总技术分:
20
总技术分排名:
175595
揭贴率:
89.66%
发表于:
2008-08-21 21:11:35
楼主
一亿个整数里找出现次数最多的前N个数
有没有比较好点的方法???
问题点数:
20
回复次数:
46
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
e_sharp
新的开始
等级:
可用分等级:
中农
总技术分:
2182
总技术分排名:
9893
发表于:
2008-08-21 21:30:45
1
楼 得分:
0
mark
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
buzhiyao
buzhiyao
等级:
可用分等级:
中农
总技术分:
34
总技术分排名:
147733
发表于:
2008-08-21 21:35:47
2
楼 得分:
0
mark
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
panda_lin
熊猫
等级:
可用分等级:
掌柜
总技术分:
3289
总技术分排名:
6297
发表于:
2008-08-21 22:15:13
3
楼 得分:
0
最简单的方法,用stl的map做。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
richbirdandy
阿2
等级:
可用分等级:
贫农
总技术分:
1467
总技术分排名:
14156
发表于:
2008-08-21 23:29:40
4
楼 得分:
0
想到几个思路 没有特别针对这道题的 等高手解答吧
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
traso
traso
等级:
可用分等级:
贫农
总技术分:
15
总技术分排名:
195480
发表于:
2008-08-22 03:09:54
5
楼 得分:
0
mark 关注.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jdifjoifj
没有昵称
等级:
可用分等级:
短工
总技术分:
55
总技术分排名:
120056
发表于:
2008-08-22 08:44:56
6
楼 得分:
0
该回复于2008-08-25 13:06:18被版主删除
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
xianyuxiaoqiang
想翻身的咸鱼
等级:
可用分等级:
贫农
总技术分:
337
总技术分排名:
43634
发表于:
2008-08-22 13:50:41
7
楼 得分:
0
1亿==100M
开辟200M内存够了...
array[100000000]
初始化为0
从文件里读入数据到source[100000000]数组中。
遍历source[]:
array[source[i]-1]++;
i=0...99999999
定义数组
result[N]
问题简化为:从array中选出N个下标值,它们对应了array中存储的最大的N个数。
比如array[0]=50000000,array[1]=50000000,那么result[0]=0+1=1
result[1]=1+1=2
献丑了。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
peach5460
桃子
等级:
可用分等级:
中农
总技术分:
213
总技术分排名:
57728
发表于:
2008-08-25 10:30:00
8
楼 得分:
0
mark
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
coverallwangp
coverall
等级:
可用分等级:
中农
总技术分:
2075
总技术分排名:
10182
发表于:
2008-08-25 10:39:46
9
楼 得分:
0
遍历每一个元素(如果内存不能全部装入,可以一部分一部分的装)
typedef tagM
{
int Num;
int count;
}
如果这个元素没有出现过,则建立一个新的结构tagM,Num是这个元素的值,count是这个元素已经出现的次数
如果这个元素已经出现过,则将相应结构的计数count加1
最后取计数大的前N个
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Lx_china
萝卜
等级:
可用分等级:
贫农
总技术分:
536
总技术分排名:
30855
发表于:
2008-08-25 11:21:40
10
楼 得分:
0
占个坑,好好想想,顺便等高手回答
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
freedomzcd
追风雪鹰
等级:
可用分等级:
中农
总技术分:
384
总技术分排名:
39666
发表于:
2008-08-25 11:53:52
11
楼 得分:
0
呃.....
关注..
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zhirom
该用户很懒,没有设置昵称
等级:
可用分等级:
贫农
总技术分:
0
总技术分排名:
313963
发表于:
2008-08-25 13:17:59
12
楼 得分:
0
用hash函数,用一个响应的变量记录重复的次数
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jeansmy111
等级:
可用分等级:
贫农
总技术分:
29
总技术分排名:
157999
发表于:
2008-08-25 17:15:29
13
楼 得分:
0
指出“七樓”錯誤:數組不能申請200M內存空間,這是不合法的。
數組所能申請的內存空間小於2M。用數組對於這道題是行不通的。
建議:
本題的關鍵是這一億個數怎麼存儲和操作的問題。
有二種方法可以解決:1,用外數據存儲方法
2,用二叉樹
建議閱讀數據結構最後二章。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
panda_lin
熊猫
等级:
可用分等级:
掌柜
总技术分:
3289
总技术分排名:
6297
发表于:
2008-08-26 10:05:34
14
楼 得分:
0
想用二叉树的话STL的map已经解决的很好了。开大内存不现实。如果内存有限,那就二叉树也没法解决了,用外部存储吧。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ateen
该用户很懒,没有设置昵称
等级:
可用分等级:
长工
总技术分:
884
总技术分排名:
21237
发表于:
2008-08-26 10:09:27
15
楼 得分:
0
占楼,关注中~
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
hqin6
!独行
等级:
可用分等级:
中农
总技术分:
5250
总技术分排名:
4073
发表于:
2008-08-26 10:17:37
16
楼 得分:
0
数目太多了~
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
rendao0563
等级:
可用分等级:
长工
总技术分:
0
总技术分排名:
313963
发表于:
2008-08-26 18:02:38
17
楼 得分:
0
引用 7 楼 xianyuxiaoqiang 的回复:
1亿==100M
开辟200M内存够了...
array[100000000]
初始化为0
从文件里读入数据到source[100000000]数组中。
遍历source[]:
array[source[i]-1]++;
i=0...99999999
定义数组
result[N]
问题简化为:从array中选出N个下标值,它们对应了array中存储的最大的N个数。
比如array[0]=50000000,array[1]=50000000,那么result[0]=0+1=1
result[1]=1+1=2
献丑了。
不错,只需要遍历一次.200M连续空间很轻松就可以申请到的. 如果数据更大.可以hash到多台机器上.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
rockyrl
该用户很懒,没有设置昵称
等级:
可用分等级:
短工
总技术分:
19
总技术分排名:
188052
发表于:
2008-08-26 18:51:50
18
楼 得分:
0
引用 7 楼 xianyuxiaoqiang 的回复:
1亿==100M
开辟200M内存够了...
array[100000000]
初始化为0
从文件里读入数据到source[100000000]数组中。
遍历source[]:
array[source[i]-1]++;
i=0...99999999
定义数组
result[N]
问题简化为:从array中选出N个下标值,它们对应了array中存储的最大的N个数。
比如array[0]=50000000,array[1]=50000000,那么result[0]=0+1=1
result[1]=1+1=2
献丑了。
不懂你这是什么意思,array[source[i]-1]++是表示为文件中每一个数分配一个计数的单元么?那整数的大小超过1亿了怎么办?一共1亿个整数不代表最大就1亿。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
rockyrl
该用户很懒,没有设置昵称
等级:
可用分等级:
短工
总技术分:
19
总技术分排名:
188052
发表于:
2008-08-26 19:00:16
19
楼 得分:
0
引用 7 楼 xianyuxiaoqiang 的回复:
1亿==100M
开辟200M内存够了...
array[100000000]
初始化为0
从文件里读入数据到source[100000000]数组中。
遍历source[]:
array[source[i]-1]++;
i=0...99999999
定义数组
result[N]
问题简化为:从array中选出N个下标值,它们对应了array中存储的最大的N个数。
比如array[0]=50000000,array[1]=50000000,那么result[0]=0+1=1
result[1]=1+1=2
献丑了。
array的大小应该包含到所有可能的整数,如果整数是32位,array应该分配G级的空间了
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
satinelam
该用户很懒,没有设置昵称
等级:
可用分等级:
短工
总技术分:
0
总技术分排名:
313963
发表于:
2008-08-27 10:06:37
20
楼 得分:
0
mark
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
freedomzcd
追风雪鹰
等级:
可用分等级:
中农
总技术分:
384
总技术分排名:
39666
发表于:
2008-08-27 11:35:29
21
楼 得分:
0
嗯...某楼果然是献丑了...o(∩_∩)o...
继续关注...
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
duanyongzhi
天天开心
等级:
可用分等级:
中农
总技术分:
107
总技术分排名:
85721
发表于:
2008-08-27 14:26:45
22
楼 得分:
0
引用 21 楼 freedomzcd 的回复:
嗯...某楼果然是献丑了...o(∩_∩)o...
继续关注...
自已想不出来,却想去笑别人。浮云啊浮云。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
starstarstone
等级:
可用分等级:
贫农
总技术分:
52
总技术分排名:
123141
发表于:
2008-08-27 21:33:49
23
楼 得分:
0
引用 7 楼 xianyuxiaoqiang 的回复:
1亿==100M
开辟200M内存够了... /////////////////////////////////应该根据整数的范围开辟空间,而不是整数的个数
array[100000000]
初始化为0
从文件里读入数据到source[100000000]数组中。
遍历source[]:
array[source[i]-1]++;
i=0...99999999
定义数组
result[N]
问题简化为:从array中选出N个下标值,它们对应了array中存储的最大的N个数。
比如array[0]=50000000,array[1]=50000000,那么result[0]=0+1=1
result[1]=1+1=2
献丑了。
-----------------------------------------------------
以无符号整型数为例
定义array[65536]并初始化为0
假设这一亿个数在source[100000000]中
遍历source[]:
array[source[i]-1]++;
i=0...99999999
这时,array[x]就是x出现的次数
从array中选出N个下标值,它们对应了array中最大的N个数,这N个下标就是楼主要找的N个数
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
j8daxue
abcd
等级:
可用分等级:
贫农
总技术分:
84
总技术分排名:
99012
发表于:
2008-08-31 02:26:44
24
楼 得分:
0
看下编程之美上面类似的题
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
wxmowen
michael
等级:
可用分等级:
短工
总技术分:
0
总技术分排名:
313963
发表于:
2008-08-31 10:17:14
25
楼 得分:
0
太夸张了吧,动不动就要申请大内存啊。。一定会还有更好的办法的
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
hecho
该用户很懒,没有设置昵称
等级:
可用分等级:
短工
总技术分:
0
总技术分排名:
313963
发表于:
2008-09-02 20:25:28
26
楼 得分:
0
占个位置等好的方法!!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kings_zqz
等级:
可用分等级:
富农
总技术分:
411
总技术分排名:
37290
发表于:
2008-09-03 23:01:38
27
楼 得分:
0
mark
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
langellan
该用户很懒,没有设置昵称
等级:
可用分等级:
短工
总技术分:
2
总技术分排名:
281888
发表于:
2008-09-03 23:29:47
28
楼 得分:
0
这里面好像考的是算法,我不会,看看高手能不能给个好的设计方式
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Kasmile
小小菜鸟
等级:
可用分等级:
长工
总技术分:
102
总技术分排名:
88036
发表于:
2008-09-03 23:51:39
29
楼 得分:
0
引用 26 楼 hecho 的回复:
占个位置等好的方法!!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
hotonion
菜鸟怎么变大牛呢?
等级:
可用分等级:
贫农
总技术分:
126
总技术分排名:
78958
发表于:
2008-09-04 09:39:32
30
楼 得分:
0
mark
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
fallening
龖之赫,霆之砉
等级:
可用分等级:
长工
总技术分:
2206
总技术分排名:
9691
发表于:
2008-09-04 09:45:45
31
楼 得分:
0
std::nth_element
修改
删除
举报
引用
回复