风之语者

博客园 首页 新随笔 联系 订阅 管理

在网上看到一个面试题,是怎么在10万个手机号码中把重复的号码筛选出来。

想了一下,可以先使用快速排序法进行排序,然后再逐条循环和相邻号码匹配,这样重复的号码就出来了。

如果分段进行的话可以适当减小算法的复杂度。而且可以通过多线程充分利用CPU性能。

 

 

使用mapreduce简直不要太容易了。

var result = 号码.MapReduce(t=>

{

  return new KeyValueClass(t.号码, 1);

},

(key, values)=>

{

  return values.Count();

});

然后循环字典result,把value>1的数据取出来就可以了

posted on 2011-07-21 10:17  风之语者  阅读(8737)  评论(48编辑  收藏  举报