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;
}
} |