2014年1月19日

寻找一个长度为3n的数组中出现次数超过n的元素

摘要: 思路1: 排序,然后扫描一遍,这样的复杂度主要在于排序,时间复杂度为O(n log n)思路2: 可以借用快速排序的思想,先用O(n)的时间找到n/3位置的元素,再用O(n)的时间找到2n/3位置的元素,出现次数超过n次的元素是这两个中的一个,扫描一边统计一下次数就完成了。思路3: 每次删掉3个不同的元素,保留两个不同的元素以及他们出现的频率,最后两个元素中,频率高的元素既是所求。下面是ocaml的代码let find lst = let rec find_int c1 v1 c2 v2 l = match l with [] -> if c1 > c2 then v1 els.. 阅读全文

posted @ 2014-01-19 09:45 mathlover 阅读(219) 评论(0) 推荐(0) 编辑

导航