黑马程序员技术交流社区
标题:
关于数组去重复的其他思路(不用集合)
[打印本页]
作者:
℃葫芦
时间:
2015-8-15 10:08
标题:
关于数组去重复的其他思路(不用集合)
本帖最后由 ℃葫芦 于 2015-8-15 19:12 编辑
基础测试题里有个题是这样的:数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
看到这个题首先想到的是将数组转为集合去重之后再赋给新数组。
然后我还有一个别的想法,不用集合,如何实现去重?下面给上代码
public class Test5 {
public static void main (String [] args){
int [] arr={4,2,4,6,1,2,4,7,8,2};
//去重前打印演示
for (int x = 0 ; x<arr.length;x++){
System.out.print(arr[x]);
}
//换行
System.out.println();
//调用quChong方法去重。
int[]arr2=quChong(arr);
//去重后打印演示
for (int y = 0 ; y<arr2.length;y++){
System.out.print(arr2[y]);
}
}
//定义一个函数,用于将int型数组去重
public static int[] quChong (int[] arr){
//定义一个变量来记录复制的次数
int z = 0;
for (int x = 0 ; x < arr.length-1-z; x++){
for (int y = x+1; y < arr.length-x-z; y++){
//如果有重复的,就用复制粘贴的方法将重复的覆盖。
if (arr[x] == arr[y]) {
System.arraycopy(arr , y+1 , arr , y , arr.length-y-1);
z++; y--;
}
}
}
//新建一个长度为(旧数组长度-复制次数)的数组,将不重复的元素存入。
int [] ne = new int [arr.length-z] ;
for (int i = 0 ; i<ne.length ; i++){
ne[i]=arr[i];
}
//将去重后的数组返回。
return ne;
}
}
复制代码
欢迎大家测试以及提出更好的建议,比如简化书写或者提高效率。
作者:
℃葫芦
时间:
2015-8-15 19:13
刚做了些修改完善。
作者:
backin
时间:
2015-8-17 09:21
用迭代是不是要简洁一点啊{:2_40:}
作者:
l_15562009298
时间:
2015-8-17 10:05
用递归试试
作者:
风华正茂
时间:
2015-8-17 12:31
谢谢楼主分享,楼主辛苦了
作者:
℃葫芦
时间:
2015-8-17 13:44
经过测试,有问题 再添加一些数字进去就会出现结尾处去不掉的问题
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2