Welche Testfälle sollten für die join-Methode betrachtet werden? Welche Optimierungen können hinzugefügt werden?
Kotlin
// buchung(sitz_id, benutzer_id) PostgreSQL Begin Transaction(read_commited) seat = select * from seats where id = seat_id for update if(seat == null || seat.status == "booked") rollback return error("Sitz ist nicht verfügbar") insert into bookings (user_id, seat_id, status, created_at) values (user_id, ...) update seats set status = 'booked' where id = seat_id commit return success()
Warum ist in Map der Schlüssel die schließende Klammer und der Wert die öffnende? Was würde sich ändern, wenn man es umkehrt? Wie ist die Komplexität von containsValue im Vergleich zu get nach Schlüssel?
/*Angenommen, eine Zeichenkette wird gegeben, es ist notwendig, eine Funktion zu implementieren, um die Korrektheit der Klammerangabe zu überprüfen. Jede öffnende Klammer muss eine entsprechende schließende Klammer haben. Öffnende und schließende Klammern müssen in der richtigen Reihenfolge stehen. Klammerarten: "{", "}", "(", ")", "[", "]". Eingabe: "([]){}[(()())()]" Ergebnis: true Eingabe: "[(])" Ergebnis: false Weil die Klammern 2 und 3 falsch angegeben sind, erscheint die schließende ']' vor der schließenden '(' */ public boolean check(String s){ Deque<Character> stack = new ArrayDeque<>(); Map<Character, Character> map = Map.of( ')', '(', ']', '[', '}', '{' ); // ((( for( char c : s.toCharArray()){ if(map.containsValue(c)){ stack.push(c); } else if(map.containsKey(c)){ if( stack.isEmpty() || stack.pop() != map.get(c)){ return false; } } } return stack.isEmpty(); }
/* AUSWAHL links.K, links.V1, rechts.V2 VON links JOIN rechts AUF links.K = rechts.K; */ public <K extends Comparable<K>, V1, V2> List<Triple<K, V1, V2>> join(List<Pair<K, V1>> links, List<Pair<K, V2>> rechts) { return null; } private static class Pair<A, B> { private A erster; private B zweiter; Pair(A erster, B zweiter) { this.erster = erster; this.zweiter = zweiter; } } private static class Triple<A, B, C> { private A erster; private B zweiter; private C dritter; Triple(A erster, B zweiter, C dritter) { this.erster = erster; this.zweiter = zweiter; this.dritter = dritter; } }