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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  • 黑马币:14

  • 帖子:54

  • 精华:0

©   /  2014-6-6 21:42  /  3718 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.Arrays;
public class DeleteElem {
        /*
         * 思想: 首先将数组排序 创建一个新数组用于存放不重复的元素。
         * 由于新数组中的每一个元素都是不重复的,取出新数组中角标最大的元素和原数组中的当前角标的右边元素比较,如果相等则重复不存储,反之则存储
         */
        public static void main(String[] args) {
                int[] arr = new int[] { 1, 1, 2, 3, 4, 5, 6, 3, 4, 5, 6, 6, 7 };
                System.out.println(Arrays.toString(DeleteDuplicate(arr)));
        }

        private static int[] DeleteDuplicate(int[] arr) {
                 // 如果重复元素过多浪费存储空间,可以使用集合容器
                int[] newArr = new int[arr.length];
                // 先将数组排序
                Arrays.sort(arr);
                // 打印之前的数组
                System.out.println(Arrays.toString(arr));
                // 控制新数组角标
                int newArrIndex = 0;
                // 讲数组的第一个值给新数组,数组中的值依次和右边的元素相比较,若不想等则不存
                newArr[newArrIndex] = arr[0];
                for (int x = 1; x < arr.length; x++) {
                        if (newArr[newArrIndex] != arr[x]) {
                                // 如果新数组中的当前元素和数组中角标为X的元素不相等则表示新数组的当前元素没有重复,此时新数组角标加1,准备存放下一个元素
                                newArrIndex++;
                                newArr[newArrIndex] = arr[x];
                        }
                }
                return newArr;
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马