将数组中重复的数据剔除,且不能用Set、List、Map来实现(急)

bruceXu 发布于 2012/08/16 19:01
阅读 1K+
收藏 0
没有其他的描述,跟标题一样,问题比较简单,请各位大侠们出谋划策
加载中
0
牛牛牛牛
牛牛牛牛
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 


0
骠骑将军
骠骑将军

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

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

0
billzheng
billzheng
到底什么能用呢?然后别人才能帮你啊
0
黑狗
黑狗

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

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

0
乌龟壳
乌龟壳
最简单的应该是:排序 + 顺序遍历前后两个是否相同
0
Lunar_Lin
Lunar_Lin

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

0
bruceXu
bruceXu
感谢你们
0
helloworld_go
helloworld_go
考试题目吧,哥们,还是自己做吧。
0
ShawnFeng
ShawnFeng
最蠢的用遍历比较也可以呀
返回顶部
顶部