计算一个数组里的重复值并且删去(java)

主要思想:

数组可以无序

假设数字里的值都为正

循环判断数组 如果与前面的数字相同则变为-1

然后记录-1的个数算出重复值

然后重新new一个减去重复值长度的新数组

和原数组判断 不为-1的全部复制进来即可

代码如下:

 package Del_Same_Num;

 public class Del_Same_Num {

     static int count=0;

     //计算重复值
public static int count_same_number(int[] a)
{
for(int i=0;i<a.length;i++)
{
for(int j=i+1;j<a.length;j++)
{
if(a[i]==a[j]&&a[i]!=-1)
{
System.out.print("i="+i+":"+"j="+j+'\t');
a[j]=-1;
count++;
System.out.println("有重复值是"+a[i]);
}
}
} System.out.println("一共有"+count+"个重复值");
return count; } public static int[] change(int src[])
{
int length=src.length-count_same_number(src);
int[] target=new int[length]; int index=0;
for(int i=0;i<src.length;i++)
{
if(src[i]!=-1)
{
target[index]=src[i];
index++;
}
} display(target);
return target;
} //显示
public static void display(int[] a)
{
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
System.out.println();
}
public static void main(String[] args) {
int a[]={1,2,2,3,4,1,1,21,4,5,5,6,7,19,20,21};
display(a);
change(a);
} }

运行效果:

计算一个数组里的重复值并且删去(java)

上一篇:bit-map牛刀小试:数组test[X]的值所有在区间[1, 8000]中, 现要输出test中反复的数。要求:1. 不能改变原数组; 2.时间复杂度为O(X);3.除test外空间不超过1KB


下一篇:CSS3 justify 文本两端对齐