黑马程序员技术交流社区
标题:
清除数组中重复元素。
[打印本页]
作者:
小菜_一碟
时间:
2016-11-19 19:22
标题:
清除数组中重复元素。
存在该数组: int[] arr = { 16, 23, 9, 6, 1, 23, 6, 7, 8, 23 };
去除上面定义的数组中的重复元素,把去重复后的元素存入新数组中,并打印新数组中的元素
解析:
思路一(不通用):在考虑不改变原数组中元素的顺寻的情况下,以空间换时间,执行效率高
//1、找到原数组中最大的元素max
int max = arr[0];
for(int i=1;i<arr.length;i++){
if(max<arr[i]){
max = arr[i];
}
}
//2、创建一个新数组,数组长度为max+1,将原数组arr中的元素放入新数组中
int[] arr2 = new int[max+1];
for(int i=0;i<arr.length;i++){
int index = arr[i];
arr[index] = arr[i];
}
//3、遍历arr2中的非零元素存入结果数组res中(arr2中存在的非零元素就是题目所要求的结果)
int[] res = new int[arr.length];
int j=0;
for(int i=0;i<arr2.length;i++){
if(arr2[i]!=0){
res[j++] = arr2[i];
}
}
for(int i=0;i<res.length;i++){
System.out.print(res[i] + '\t');
}
思路二(不考虑顺序):结束set集合的唯一性操作
Set set = new HashSet();
for (int i=0;i<arr.length ; i++) {
set.add(arr[i])
}
int len = set.size();//获取集合中元素的个数作为新数组的长度
Iterator iter = set.iterator();
int[] res = new int[len];//创建新的数组用来存储结果
int = 0;
while(iter.hasNext()){
res[i++] = iter.next();
}
复制代码
作者:
小菜_一碟
时间:
2016-11-19 19:24
个人见解,仅供参考。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2