java - 删除重复元素并返回其新元素和大小的程序
问题描述
我的代码几乎完成了,但问题是在删除重复元素后它应该返回大小的返回大小。它不会输出正确的尺寸。
import java.util.Scanner;
import java.util.Arrays;
public class Main
{
public static void main (String[] args)
{
int size;
int i;
int j;
Scanner scn = new Scanner(System.in);
System.out.print("Enter the number of elements: ");
size = scn.nextInt();
System.out.println("\n");
int myArray[] = new int [size];
for(i = 0; i < size; i++)
{
System.out.print("Enter value for num["+i+"]: ");
myArray[i] = scn.nextInt();
}
System.out.print("\nThe inputted values are ");
for(i = 0; i < size; i++)
{
System.out.print(" " + myArray[i] + ",");
}
System.out.print("\nDuplicate values ");
for (i = 0; i < myArray.length-1; i++)
{
for (j = i+1; j < myArray.length; j++)
{
if ((myArray[i] == myArray[j]) && (i != j))
{
System.out.print(" " +myArray[j]+ ",");
}
}
}
int length = myArray.length;
length = remove_dupli(myArray,length);
System.out.print("\nThe new values of the array are ");
for(i = 0; i < length; i++)
{
System.out.print(" " +myArray[i]+", ");
}
System.out.println("\nThe new length of the array is: "+array_sort(myArray));
}
这部分有问题吗?
public static int remove_dupli(int myArray[], int n){
if (n==0 || n==1){
return n;
}
int[] temp = new int[n];
int j = 0;
for (int i=0; i<n-1; i++){
if (myArray[i] != myArray[i+1]){
temp[j++] = myArray[i];
}
}
temp[j++] = myArray[n-1];
for (int i=0; i<j; i++){
myArray[i] = temp[i];
}
return j;
}
还是这部分?
public static int array_sort(int[] myArray) {
int index = 1;
for (int i = 1; i < myArray.length; i++) {
if (myArray[i] != myArray[index-1])
myArray[index++] = myArray[i];
}
return index;
}
}
输出应该是:
输入元素数量:4
输入 num[0] 的值:2
输入 num[1] 的值:2
输入 num[2] 的值:3
输入 num[3] 的值:4
输入值为 2,2,3,4
重复值 2,
数组的新值为 2,3,4
数组的新长度为 3
解决方案
您用来查找重复元素的过程很好,但您实际上并没有更改数组中的元素,您只是打印非重复元素,最好的方法是将重复元素的值更改为标志,然后在删除重复项后查找数组的长度,这很容易:
for(int i=0;i<array.length;i++){
for(int j=i+1;j<array.length;j++)
{
if((array[i]==array[j]) && i!=j)
System.out.println("duplicate value:"array[j]);
array[j]=-1;
}
}
因此,现在删除重复元素后的数组长度为:
int count=0;
for(int i=0;i<array.length;i++){
if(array[i]!=-1)
count ++;
}
推荐阅读
- android - 我正在我的应用程序中实施 admob 奖励 ADS,但在主菜单上锁定其中一项功能并在观看视频时解锁它们是否正确
- c# - 小节上的 MigraDoc 分页符
- sql - 查找没有特定字符的记录
- json - 填充超过 5 万个标记时,Google 地图未加载或卡住
- php - 如何正确连接具有多对一关系的表
- javascript - 是否可以通过解构从数组创建对象?
- tensorflow - Keras 中的动态激活函数
- .net - .Net Core 在 SQL 连接中是否比 .Net Framework 慢得多?
- php - 判断数组中的空值并获取key数组
- asp.net-mvc - 登录时如何在我的应用程序中获取最后一个工作页面