Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
5.3 c
Ich habe ein Problem und zwar kommt bei mir in der merge methode eine IndexOutOfBoundsException:
Ist ja auch logisch, da:
while (l < left.length && r < right.length) {
if (left[l] < right[r]) {
int h = Math.max(left[l + 1], rHeight);
ja auf jedenfall bis left.length -1 läuft und dann einen array zugriff auf left[left.length macht] (in der Math.max methode).
Meine Frage: Was tun? Die Merge Methode war ja vorgegeben, soll ich jetzt daran was ändern, oder liegt es doch an meinen Methoden?
ich hatte das problem auch
ich glaube das tritt auf wenn die skyline nicht mit einer 0 aufhört
ich hab nämlich gedacht das das das skylinearray für jeden einzellnen Punkt die Höhe wiedergeben soll.
soll aber so sein: {anfangHöhe1, höhe1, anfangHöhe2, höhe2, anfangHöhe3, höhe3, …} letzte höhe muss 0 sein
muss ich dann in der conquer methode was ändern?
Wenn deine conquer-Methode keine korrekten Skylines zurückgibt, ja.
Du kannst auf jeden Fall davon ausgehen, dass die merge-Methode funktioniert, wenn sie mit korrekten Skylines aufgerufen wird. Du solltest sie nicht verändern.
Wie korrekte Skylines auszusehen haben, siehe vorherigen Post von blubbrezn oder hier.
Danke!! Da ich endlich wusste was das Problem war hab ich jetzt nach endlosen rumprobieren jetzt das richtige Ergebnis.
Nochmals: Danke! Sehr hilfreich