public static Skyline merge(Skyline skyline1, Skyline skyline2){ int[] nCoords = new int[skyline1.coords.length + skyline2.coords.length]; int i = 0; int j = 0; for (int h = 0; h < nCoords.length; h += 2){ // normaal kwam hier "nCoords[h+1] = 0;" - oneven = hoogtes - niet nodig om uit te voeren -> initialisatie waarde is altijd 0 if (skyline1.coords[i] <= skyline2.coords[j]){ nCoords[h] = skyline1.coords[i]; if (!(i+2 >= skyline1.coords.length)) i += 2; } else { nCoords[h] = skyline2.coords[j]; if (!(j+2 >= skyline2.coords.length)) j += 2; } } i = 0; j = 0; for (int k = 1; k < nCoords.length-1; k += 2){ if (nCoords[i] <= skyline2.coords[j]){ nCoords[k] = skyline1.coords[i]; if (!(i+2 >= skyline1.coords.length)) i += 2; } else { nCoords[k] = skyline2.coords[j]; if (!(j+2 >= skyline2.coords.length)) j += 2; } } return verwijderDubbels(nCoords); // maak een nieuwe skyline aan met deze coordinaten en geef ze terug } private static Skyline verwijderDubbels(int[] nCoords){ int h = 0; for (int i = 0; i < nCoords.length-2; i++){ if (nCoords[i] == nCoords[i+2]){ nCoords[i+1] = -1; nCoords[i+2] = -1; h += 2; } } int[] fCoords = new int[nCoords.length];//-h]; for (int j = 0; j < nCoords.length; j++){ if (nCoords[j] != -1){ fCoords[j] = nCoords[j]; } } return new Skyline(fCoords); }