日期:2014-05-20  浏览次数:20637 次

整数型去重排序,测试案例异常
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;


public final class Demo {
/*****************************************************************************
Description : 实现整数排序,即先将从A输入的整型数序列进行排序,剔除重复整型数,输出得到的升序序列B;
Input       : array_A                 输入参数,输入待排序整型数序列A
Return      : 排序后的整型数序列
*****************************************************************************/
public static int[] sort(int []array_A)
{
if(array_A.length==0)
return null;

List<Integer> list=new LinkedList<Integer>();
for(int i=0;i<array_A.length;i++){
list.add(array_A[i]);
}
//排序
Collections.sort(list);

//去重
Iterator<Integer> i=list.iterator();
int x=0;
if(i.hasNext()){
x=i.next();
}
int y=0;
while(i.hasNext()){
y=i.next();
if(x==y){
i.remove();
}else{
x=y;
}
}

//将list转为int数组
    int[] array_B=new int[list.size()];
    int index=0;
    Iterator<Integer> j=list.iterator();
    while(j.hasNext()){
     array_B[index++]=j.next();
    }
    return array_B;
}
}


经过测试案例检查,5个通过,一个异常,因为看不到测试案例,不知道错误出在哪里。

------解决方案--------------------

    public static int[] sort(int[] array_A) {
        if (array_A.length == 0) {
            return null;
        }
        Set<Integer> set = new TreeSet<Integer>();
        for (int i = 0; i < array_A.length; i++) {
            set.add(array_A[i]);
        }
        int[] array_B = new int[set.size()];
        int index = 0;
        for (Integer i: set) {
            array_B[index++] = i;
        }
        return array_B;
    }

------解决方案--------------------

把x=i.next(); 换成 x=i.next().intValue();
  y=i.next(); 换成 y=i.next().intValue();
试试