Zweithöchste Anzahl ArrayList
Also ich hab diesen code bisher:
int secondLargest = list.get(0);
int largest = list.get(0);
for (int i = 0; i < list.size(); i++)
{
if(list.get(i) > largest)
{
secondLargest = largest;
largest = list.get(i);
if(list.get(i) > secondLargest && list.get(i) != largest)
{
secondLargest = list.get(i);
}
}
}
System.out.print("Second biggest number ");
return secondLargest;
Das problem ist, dass wenn ich diesen code verwenden
(die Liste ist:)
list2.add(1);
list2.add(2);
list2.add(10);
list2.add(9);
list2.add(8);
list2.add(7);
die "Suche" für die zweite höchste Zahl hält an 2, denn 10 ist die höchste Zahl. Wie kann ich dieses Problem beheben?
- Ich denke, der einfachste Weg, dies zu tun ist zu Sortieren das array und nehmen das zweite element (je nach Bestellung, natürlich, so bin ich der Annahme, es wird in absteigender Reihenfolge sortiert). Darüber hinaus
SortedSet
können verwendet werden, wenn Sie können Gebrauch machen von den Collections-framework.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil
second largest
ist kleiner alslargest
so wirst du es nie finden in derif
block, die Prüfung für den größten Wert.list.get(i) != largest
.Verwenden
Arrays.sort(array);
und erhalten Sie das zweite element.O(n.log(n))
loopingO(n)
, so wäre es besser, einfach nur loop.Verwenden Sie zwei for-Schleifen. Die erste soll die größte Nummer, und speichern Sie Ihre index-position. Der zweite sollte, finden die größte Zahl, die nicht an der gleichen Indexposition als der zuvor gefundenen Zahl. (Dadurch wird sichergestellt, dass Sie verpassen Sie nicht die Fälle, wo die zweite-größte Zahl ist die gleiche wie die größte.)
Wenn Sie denken, dass es angemessen ist, verwenden Sie
Arrays.sort(array);
bekommen und das zweite element, wie vorgeschlagen, durch ɐuıɥɔɐɯ.Könnten Sie zuerst finden Sie die maximale Anzahl der in der ArrayList mit den Sammlungen.max () - Funktion, sobald Sie die max-element, finden Sie den index dieses Elements und lernen Sie dieses aus dem array entfernt. Wieder Kollektionen.max() zu finden, die zweite größte Zahl im array. Code wie unten
Lassen Sie mich wissen, wenn weitere details benötigt werden um es.
Innerhalb der Schleife das erste
if statement
, check gegen densecond largest
eher als dielargest
. Die unten erhalten Sie