我想要一个核心 java 程序来查找两个数组之间的唯一元素。示例:Array1 - 9, 5,3,23,2,5 Array2 - 19, 5,3,23,24,53
来自两个数组的唯一元素的输出应打印为:9、2、19、24、53
请帮助我编写具有准确循环的程序。
注意:不想使用任何集合来处理相同的程序,并且只想使用循环来完成。谢谢
您必须使用至少 2 个循环。
public void uniqueM(int arrayA[], int arrayB[]){
boolean uniqueA = true, uniqueB = true;
int high_size = arrayA.length, low_size = arrayB.length;
if(arrayA.length < arrayB.length){
low_size = arrayA.length;
high_size = arrayB.length;
}
for(int i = 0; i < high_size; i++){
for(int j = 0; j < low_size;j++)
{
if(i < arrayA.length && arrayA[i] == arrayB[j]) uniqueA = false;
if(i < arrayB.length && arrayB[i] == arrayA[j]) uniqueB = false;
}
if(uniqueA && i < arrayA.length) System.out.println(arrayA[i]);
if(uniqueB && i < arrayB.length) System.out.println(arrayB[i]);
uniqueA = true;
uniqueB = true;
}
}
您需要根据合法整数的范围调整counter
数组和offset
变量的大小。但这不使用java.util
API 中的任何内容,只使用循环。
public static int[] uniques(int[] array1, int[] array2) {
// assuming your integers are 0-53, you'd have to modify this if it's different
int[] counter = new int[54];
// offset needs to be changed based on if negative numbers are allowed
int offset = 0;
for(int i = 0; i < array1.length; i++) {
counter[array1[i] + offset]++;
}
for(int i = 0; i < array2.length; i++) {
counter[array2[i] + offset]++;
}
int numUniques = 0;
for(int i = 0; i < counter.length; i++) {
if(counter[i] == 1) numUniques++;
}
int[] uniqueArray = new int[numUniques];
int index = 0;
for(int i = 0; i < counter.length; i++) {
if(counter[i] == 1) uniqueArray[index++] = i;
}
return uniqueArray;
}