本帖最后由 ℃葫芦 于 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;
- }
- }
复制代码
欢迎大家测试以及提出更好的建议,比如简化书写或者提高效率。
|
|