wie gesagt: erst in Worten erzählen, Java überhaupt nicht,
dein Code und deine Zeilen enthalten eigentlich gar keine Lösung, Startzeiten und Endzeiten aufzutrennen ist schonmal schlecht,
ansonsten kümmerst du dich vielleicht um den Test, nicht aber um das Finden von Lösungen an sich
-----
alles fängt mit einem Beispiel an, vier Intervalle:
A = 2-5
B = 6-7
C = 4-5
D = 5-7
(1)
eine denkbare Partitionierung ist alle 4 Intervalle in einer Partition,
wenn man die prüft (Java-Untermethode, nicht weiter spannend) wird man feststellen, dass sich die Intervalle überschneiden
-> keine Lösung
(2)
noch eine Variante ist, für jedes Intervall eine separate Partition anzulegen, dies ist eine triviale Variante, die immer eine Lösung ist
(3)
interessanter wirds, wenn A+B in einer Partition stehen und C+D in einer anderen,
usw.
(1), (2), (3) sind drei mögliche Partitionierungen, alle Möglichkeiten muss man finden
ein Ansatz:
man kann sich eine Notation ausdenken, jedem der vier Intervalle eine Zahl x zuordnen, die die Einordnung in die Partition x bedeutet
Partitionierung (1) ist dann 1111, alle 4 Intervalle kommen in Partition 1
Partitionierung (2) ist dann 1234, alle 4 Intervalle kommen in eigene 4 unterschiedliche Partitionen
Partitionierung (3) ist dann 1122,
die Menge aller möglichen Partitionierungen kann man dann mehr oder weniger leicht sehen:
1111
1112
(1113 macht keinen Sinn)
1121
1122
1123
usw.
das in Java umzusetzen ist schon nicht ganz trivial, Rekursion hilft,
oder komplexe Schleife mit Array, Zählvariablen usw.
----
zweiter Ansatz:
man kann sich die Rekursion (jetzt wirklich halb in Java gedacht) auch etwas plastischer vorstellen:
das erste Intervall kommt eh immer in die erste Partition,
das zweite Intervall kommt entweder mit in die erste Partition oder in eine zweite neue,
beide Varianten ausprobieren, mit Backtracking zwischendurch den Rest positionieren
fürs x-te Intervall gilt: schauen wie viele Partitionen da sind,
nacheinander in alle vorhandenen einfügen (dazwischen immer per Rekursion weitersuchen)
sowie eine neue Partition aufmachen (+ weitersuchen)
diese Verarbeitung hat den Vorteil, dass man beim Einfügen in eine Partition gleich prüfen kann, ob die Zeit-Bedingung verletzt ist,
dann kann man den aktuellen Versuch abbrechen, egal wie die restlichen Intervalle zu platzieren sind
-----
so, das waren jetzt mehr Tipps als ich geben wollte, aber alle noch allgemein, hast noch genug zu programmieren 
wenn dir Rekursion + Backtracking nix sagen, dann das vorher nachschlagen