2 つの配列間で一意の要素を見つけるコア Java プログラムが必要です。例: 配列 1 - 9、5、3、23、2、5 配列 2 - 19、5、3、23、24、53
両方の配列からの一意の要素の出力は、次のように出力されます: 9、2、19、24、53
正確なループでプログラムを書くのを手伝ってください。
注: コレクションのいずれかを使用して同じプログラムを処理したくなく、ループのみを使用して実行したいと考えています。ありがとう
有効な整数がどの範囲に収まるかに基づいて、counter
配列と変数のサイズを微調整する必要があります。ただし、これはAPI で何も使用せず、ループのみを使用します。offset
java.util
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;
}
少なくとも 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;
}
}