黑马程序员技术交流社区

标题: 老师留得作业题目也太难了,,我想了好久,原谅我是一只小 [打印本页]

作者: 877758007@qq.co    时间: 2016-7-27 07:35
标题: 老师留得作业题目也太难了,,我想了好久,原谅我是一只小
分析以下需求,并用代码实现:(有兴趣的同学可以试试!  拓展)
        (1)定义一个int类型的一维数组,内容为{6,2,9,6,1,2,6,7,8}
        (2)去除上面定义的数组中的重复元素,打印最终结果{6, 2, 9, 1, 7, 8}

作者: 877758007@qq.co    时间: 2016-7-27 07:37
我是一只小小小菜鸟,,,大牛指点带我飞
作者: cat73    时间: 2016-7-27 08:25
把所有元素加入 Set
然后 toArray
作者: leomywork    时间: 2016-7-27 12:05
是时候装一波了,当时候装一波了。放上我的github链接https://github.com/leomy/Algorithm/blob/master/duplicateCheck/duplicateCheck.c   这是C语言实现的,注意查看同目录下的.h文件,有参数的使用条件
作者: 13411939415    时间: 2016-7-27 23:26
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]);
                }
        }
}

纯手打哦,拿去吧
作者: 13411939415    时间: 2016-7-27 23:31
最外层循环也减去一个num,代码更好点
for(int i = 0; i < a.length - num - 1; i++ ) {
作者: 13411939415    时间: 2016-7-27 23:34
额,突然想到更简单的。。。
我去去就来
作者: 13411939415    时间: 2016-7-27 23:42
我又回来了!!!

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]);
                }
        }
}
作者: haochengjian    时间: 2016-7-27 23:46
对不起  哈哈哈




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2