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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

* 第6题:数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
* @author 刘德旺
*/
import java.util.Arrays;
public class Test6 {
        public static void main(String[] args) {
                int arr[]={4,2,4,6,1,2,4,7,8};
                System.out.println("原始数组:[4,2,4,6,1,2,4,7,8]");
                System.out.println("去重复后的数组:"+Arrays.toString(repeat(arr)));        //将去重后数组打印出来
        }
        
        public static int[] repeat(int [] arr){
                boolean flag[] = new boolean[arr.length];//定义一个和目标数组长度一样的boolean类型,此数组用作标示,用于获取不重复元素的个数的标志位
                for (int i = 0; i < flag.length; i++) {//遍历数组,查找重复的元素。循环结束后,重复的元素对应的标志位置都为true。
                        if (flag[i]) //如果这个元素对应的标志位已被置为true,则返回循环继续检查下一个元素。
                                        continue;
                        for (int j = i+1; j < flag.length; j++) {    //后边元素和此位置上的元素比较,
                                if (arr[j]==arr[i]) {     //如果后边元素和前边元素相同,
                                        flag [j]=true;   //则此重复元素对应的标志位置为true
                                }
                        }
                }
               
                int count=0;    //计数器,记录不重复元素的个数
                for (int i = 0; i < flag.length; i++) {    //算出不重复元素的个数,记为count,
                        if (!flag[i]) {      //标志位依然为false的对应元素即为不重复的元素
                                count++;
                        }
                }
               
                int index=0;
                int [] arrNew = new int [count];        //定义新数组,元素个数为count。
                for (int i = 0; i < arr.length; i++) {        //将所有不重复的元素存入新数组中
                        if (!flag[i]) {
                                arrNew[index++]=arr[i];
                        }
                }
               
                return arrNew;     //返回数组
        }
}

2 个回复

正序浏览
挺有帮助的哈
回复 使用道具 举报
很有帮助,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马