日期:2014-05-20 浏览次数:20993 次
package test;
import java.util.Scanner;
public class Exercise6_51 {
public static void main(String args[]){
int[] a=new int[10];
Scanner input=new Scanner(System.in);
System.out.print("Enter ten numbers:");
for(int i=0;i<a.length;i++){
a[i]=input.nextInt();
}
for(int i=0;i<a.length;i++){
for(int j=i;j<a.length-1;j++){
if(a[i]==a[j+1]){
a[j+1]=0;
}
}
}
//java.util.Arrays.sort(a);
System.out.print("The distinct numbers are:");
for(int i=0;i<a.length;i++){
if(a[i]!=0){
System.out.print(a[i]+" ");
}
}
}
}
public static void main(String[] args) {
int[] arr = new int[] { 1, 1, 2, 3, 3, 4, 5, 6, 7, 8 };
Set<Integer> set = new TreeSet<Integer>();
for (int i : arr) {
set.add(i);
}
int[] des = new int[set.size()];
int j = 0;
for (Integer i : set) {
des[j++] = i;
}
System.out.println(Arrays.toString(des));
}
------解决方案--------------------
楼主的方法中存在一个问题,如果数组本身就存在重复的0,处理就会得到错误的结果
使用set是一种好办法
如果要自己实现的话,
常规的做法是新建一个数组,原始数组中的值一次放入新建数组中,放入之前进行比较
复杂度为O(n*n)