ich, ob Array B überprüfen wollen, ist Permutation von Array A.Überprüfen Sie, ob ein Array eine permutierte Version eines anderen Array ist
Ich dachte, es 1 verwendet getan werden kann for
-loop, aber ich verschiedene Quellen sah, dass die meisten von ihnen hat mir gesagt, dass ich 2 for
-loops verwenden soll.
for (int i = 0; i < A.length; i++) {
boolean found = false;
for (int j = 0; j < B.length; j++)
if (B[j] == A[i]) {
found = true;
break;
}
assert(found);
}
for (int i = 0; i < B.length; i++) {
boolean found = false;
for (int j = 0; j < A.length; j++)
if (A[j] == B[i]) {
found = true;
break;
}
assert(found);
}
Ist dies eine korrekte Umsetzung mit 2 for
-loops?
Übrigens, warum musste ich 2 for
-loops durchführen, wo erste B mit A vergleicht, dann die zweite A mit B?
'O (N * log (N))' Lösung: sortiere beide Arrays aus und überprüfe, ob 'A [i] = B [i]' für alle 'i's –
Die kanonische Methode ist, beide Arrays zu sortieren und dann prüfen, ob die sortierten Arrays gleich sind. In Ihrem Fall prüft das erste Schleifenpaar, ob alle Elemente von A in B sind und das zweite Paar prüft, ob alle Elemente von B in A sind. Sie können das zweite Paar löschen und stattdessen prüfen, ob A und B gleich lang sind. – dhke
Diese Implementierung ist falsch, da doppelte Werte nicht korrekt verarbeitet werden können. Dieser Code "sagt", dass "A = {1, 2}" und "B = {1, 1, 1, 2}" in Ordnung sind, obwohl es nicht wahr ist. – Tom