论坛首页 综合技术论坛

去除重复数

浏览 11122 次
锁定老帖子 主题:去除重复数
精华帖 (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;
	}
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics