A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ℃葫芦 于 2015-8-15 19:12 编辑

基础测试题里有个题是这样的:数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}

看到这个题首先想到的是将数组转为集合去重之后再赋给新数组。
然后我还有一个别的想法,不用集合,如何实现去重?下面给上代码

  1. public class Test5 {
  2.         public static void main (String [] args){
  3.                 int [] arr={4,2,4,6,1,2,4,7,8,2};
  4.                 //去重前打印演示
  5.                 for (int x = 0 ; x<arr.length;x++){
  6.                         System.out.print(arr[x]);
  7.                 }
  8.                 //换行
  9.                 System.out.println();
  10.                 //调用quChong方法去重。
  11.                 int[]arr2=quChong(arr);
  12.                 //去重后打印演示
  13.                 for (int y = 0 ; y<arr2.length;y++){
  14.                         System.out.print(arr2[y]);
  15.                 }
  16.         }

  17.         //定义一个函数,用于将int型数组去重
  18.         public static int[] quChong (int[] arr){
  19.                 //定义一个变量来记录复制的次数
  20.                 int z = 0;
  21.                 for (int x = 0 ; x < arr.length-1-z; x++){
  22.                         for (int y = x+1; y < arr.length-x-z; y++){
  23.                                 //如果有重复的,就用复制粘贴的方法将重复的覆盖。
  24.                                 if (arr[x] == arr[y]) {
  25.                                         System.arraycopy(arr , y+1 , arr , y , arr.length-y-1);
  26.                                         z++; y--;
  27.                                 }                                       
  28.                         }
  29.                 }
  30.                 //新建一个长度为(旧数组长度-复制次数)的数组,将不重复的元素存入。
  31.                 int [] ne = new int [arr.length-z] ;
  32.                 for (int i = 0  ; i<ne.length ; i++){
  33.                         ne[i]=arr[i];
  34.                 }
  35.         //将去重后的数组返回。
  36.         return ne;
  37.         }
  38. }
复制代码

欢迎大家测试以及提出更好的建议,比如简化书写或者提高效率。

5 个回复

正序浏览
经过测试,有问题  再添加一些数字进去就会出现结尾处去不掉的问题
回复 使用道具 举报
风华正茂 来自手机 中级黑马 2015-8-17 12:31:21
报纸
谢谢楼主分享,楼主辛苦了
回复 使用道具 举报
用递归试试
回复 使用道具 举报
用迭代是不是要简洁一点啊{:2_40:}
回复 使用道具 举报
刚做了些修改完善。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马