在網上看到一個面試題,是怎麼在10萬個手機号碼中把重複的号碼篩選出來。
想了一下,可以先使用
快速排序法進行排序,然後再逐條循環和相鄰号碼比對,這樣重複的号碼就出來了。
如果分段進行的話可以适當減小算法的複雜度。而且可以通過多線程充分利用CPU性能。
使用mapreduce簡直不要太容易了。
var result = 号碼.MapReduce(t=>
{
return new KeyValueClass(t.号碼, 1);
},
(key, values)=>
return values.Count();
});
然後循環字典result,把value>1的資料取出來就可以了