锁定老帖子 主题:去除重复数
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (12)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-02
最后修改:2011-05-02
fivestarwy 写道 排序好的,最快应该是二分吧
二分相对于遍历来说,是需要空间来换时间的。二分需要建立一个O(N)的数组。而遍历可以不需要。 这是二分的代码: public static void removeDuplicationByBinary(int[] src, int start, int end, int[] array) { if (start >= end) return; int middle = (end - start)/2; if (src[middle] != src[src[0]]) { src[src[0]++] = src[middle]; return; } removeDuplicationByBinary(src, middle, end, array); removeDuplicationByBinary(src, start, middle, array); } public static int[] removeDuplicationByBinary(int[] src) { if (src == null || src.length < 2) return src; int[] array = new int[src.length+1]; removeDuplicationByBinary(src, 0, src.length-1, array); int[] result = new int[array[0]]; System.arraycopy(array, 1, result, 0, array[0]+1); return result; } |
|
返回顶楼 | |