对2010支付宝西安最新笔试题的看法(大文件数值读取)..

2010支付宝西安最新笔试题..求高手给出算法和思路

题目: 有一个100G大小的文件里存的全是数字,并且每个数字见用逗号隔开。现在在这一大堆数字中找出100个最大的数出来。

谈点自己的看法吧.

1. 大文件读取, 涉及缓冲区的问题.

2. 数字用逗号隔开

3. 找出最大值的数

我目前看到的问题点就在这三点, 一点一点来看

1. 大文件读取的缓冲区问题.

看到原帖中17楼回复中使用了缓冲区读取的方式, 但是, 在当前条件下这样使用缓冲区是有问题的, 我们不能保证每次读取到缓冲区的是一个完整的数值. 假设, 里面有一段是... , 173786, ...但是, 缓冲区仅仅读到了173就已经满了, 对于这种情况, 应该去单独处理缓冲区的不完整的数据的.

2. 数字用逗号隔开.

个人感觉这里使用正则表达式是最好的解决方案了. 使用预编译的Pattern, 效率绝对是有提升的.

3. 找出最大值的数.

个人觉得应该自己实现一个数据结构. 比如我们叫这个数据结构为Top100Mem, 提供两个接口: 1, 读入数据; 2, 输出数据. Top100Mem的读入数据接口只接受一个输入, 对于数值的过滤(关注点: 将比Top100中最小的那个大的留下, 一共只接受Top100. Top100中无重复值.)在读入数据的接口中进行实现; 2, 输出数据则直接展示已经有的Top100数据. 至于该数据结构使用什么基础数据结构, 具体的数值过滤这些应该都是不很重要的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值