14
回答
将数组中重复的数据剔除,且不能用Set、List、Map来实现(急)
华为云实践训练营,热门技术免费实践!>>>   
没有其他的描述,跟标题一样,问题比较简单,请各位大侠们出谋划策
举报
bruceXu
发帖于5年前 14回/1K+阅
共有14个答案 最后回答: 5年前
public static void main(String[] args) {
		int[] array = { 0, 1, 1, 1, 2, 2, 6, 6, 6, 34, 88, 88, 99, 101 };
		int k = 0;// k为不含重复元素数组的索引
		for (int i = 1; i < array.length; i++) {
			if (array[i] != array[i - 1]) {
				array[++k] = array[i];
			}
		}
		for (int i = 0; i < k+1; i++) {
			System.out.print(array[i] + " ");
		}
	}

没排序的就自己加排序算法吧

结果
0 1 2 6 34 88 99 101 


能用vector吗?弄个空的vector,循环每个数组元素,去vector里面找,如果存在跳过,否则push_back

如果不能用vector,就copy一个一样大小的空数组,思路一样,但是需要多一个变量len来记录结果数组长度,循环原数组元素,在新数组中0到len-1位置搜索,如果找到跳过,否则新数组len位置等于那个元素,len++

多大的数组,数组里放的什么东西?这个算法就多了哦,你具体说说啊

如果只是想实现的话,最蠢的方法你知道吧

如果没任何条件,就只能执行一次类似排序的过程, 遇到相同元素就丢掉. set是最佳方案.
既然不准用set,那就模拟类似set的2叉树做法.
如果不允许模拟set的做法, 那就只能很二的先排个序,然后再遍历一次数组,导出不重复数据,性能差.
如果带条件的话,那优化的手段就多了.尤其是 当数组取值有范围且不大的时候,可以采用类似于 位图法/计数排序法的方法  一次单纯遍历,一次单纯输出即可解决.

顶部