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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

分析以下需求,并用代码实现:(有兴趣的同学可以试试!  拓展)
        (1)定义一个int类型的一维数组,内容为{6,2,9,6,1,2,6,7,8}
        (2)去除上面定义的数组中的重复元素,打印最终结果{6, 2, 9, 1, 7, 8}

8 个回复

倒序浏览
我是一只小小小菜鸟,,,大牛指点带我飞
回复 使用道具 举报
cat73 黑马帝 2016-7-27 08:25:45
藤椅
把所有元素加入 Set
然后 toArray
回复 使用道具 举报
leomywork 来自手机 中级黑马 2016-7-27 12:05:46
板凳
是时候装一波了,当时候装一波了。放上我的github链接https://github.com/leomy/Algorithm/blob/master/duplicateCheck/duplicateCheck.c   这是C语言实现的,注意查看同目录下的.h文件,有参数的使用条件
回复 使用道具 举报
public class LianXi5 {
        public static void main(String[] args) {
                int[] a = {6,2,9,6,1,2,6,7,8};
                int num = 0;                                                                //num为出现重复数字的次数
               
                for(int i = 0; i < a.length - 1; i++ ) {                                       
                        for(int j = i + 1; j < a.length - num; j++ ) {                //j只比较到数组长度减去重复次数的位置       
                                if(a[i] == a[j]) {
                                       
                                        for(int t = j; t < a.length - num - 1; t++) {  //把重复的数字替换成下一位置的数,后面的数依次向前替换
                                                a[t] = a[t + 1];
                                        }
                                        num++;                                                                //if每执行依次说明有出现一次重复的数字
                                }
                        }
                }
               
                int[] b = new int[a.length - num];          //定义数组b的长度为数组a长度减去出现重复数字的次数
                for(int i = 0; i < b.length; i++){                        //用数组b接受去掉重复之后的内容
                        b[i] = a[i];
                }
               
                a = b;                                                                                //把b的地址值赋给a
               
                for(int i = 0; i < a.length; i++ ) {                //遍历a
                        System.out.println(a[i]);
                }
        }
}

纯手打哦,拿去吧
回复 使用道具 举报
最外层循环也减去一个num,代码更好点
for(int i = 0; i < a.length - num - 1; i++ ) {
回复 使用道具 举报
额,突然想到更简单的。。。
我去去就来
回复 使用道具 举报
我又回来了!!!

public class LianXi6 {
        public static void main(String[] args) {
                int[] a = {6,2,9,6,1,2,6,7,8};
                int length = a.length;                                        //length为数组当前长度
               
                for(int i = 0; i < length - 1; i++ ) {
                        for(int j = i + 1; j < length; j++ ) {                //每出现一次重复的数字,该数字后面的所有数字依次向前移动一位,数组的长度-1
                                if(a[i] == a[j]) {
                                        for(int t = j; t < length -1; t++ ) {
                                                a[t] = a[t + 1];
                                        }
                                        length--;                                       
                                }
                        }
                }
                for(int i = 0; i < length; i++ ) {                        //遍历数组
                        System.out.println(a[i]);
                }
        }
}
回复 使用道具 举报
对不起  哈哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马