Ich arbeite an einem Programm, das die größte Zahl in beiden Arrays zurückgibt. Hier finden Sie einige Erwartungen:Java - gebe das größte Element in beiden Arrays zurück
maxInCommon({1, 2, 3, 4, 5, 6, 7, 8}, {-1, -2, 9, 5}) → 5
maxInCommon({1}, {}) → 0
maxInCommon({-1, -2}, {-2, -3, -4}) → -2
Mein Code funktioniert für viele Situationen, aber nicht für diese:
asn9_maxInCommon({-10, -11}, {-10, -11, -12}) → -10
statt Nachgeben „-10“, mein Programm gibt einen „-11“. Im Folgenden ist mein AKTUALISIERT Code:
public int maxInCommon(int[] nums1, int[] nums2) {
int numInCommon = 0;
Arrays.sort(nums1);
Arrays.sort(nums2);
ArrayList<Integer> nums1List = new ArrayList();
ArrayList<Integer> nums2List = new ArrayList();
int number = 0;
int number1 = 0;
for (int a = 0; a < nums1.length; a++)
{
number = nums1[a];
nums1List.add(number);
}
for (int b = 0; b < nums2.length; b++)
{
number1 = nums2[b];
nums2List.add(number1);
}
for (int c = (nums1List.size() - 1); c > - 1; c--)
{
for (int d = (nums2List.size() - 1); d > -1; d--)
{
if (nums1List.get(c) == nums2List.get(d))
numInCommon = nums1List.get(c);
}
}
return numInCommon;
}
Ich dachte, die Logik des Codes sollte in Ordnung sein, aber es funktioniert immer noch nicht. Einige andere Fälle, bei denen die Logik fehlschlägt, sind:
Mein Code ergibt stattdessen "0".
maxInCommon({1, 2, 3, 4, 5, 6, 7, 8}, {-1, -2, 9, 6, 7, 8, 9}) → 8
Mein Code ergibt stattdessen "6".
Der Zweck der ArrayLists ist es, ein Element nach jedem Vergleich irgendwie zu entfernen. Ich habe dieses Feature hier nicht benutzt.
Sie sollten 'numInCommon' nur ändern, wenn der Ist-Common-Wert größer ist als der letzte gemeinsame Wert gefunden Genau –
. Fügen Sie einfach eine Überprüfung hinzu, um zu sehen, ob max1 == nums2 [b] AND that max1> numInCommon. – cjm
Vielen Dank, ich werde jeden Ihrer Vorschläge einzeln untersuchen. –