Welke testgevallen moeten worden overwogen voor de join-methode? Welke optimalisaties kunnen worden toegevoegd?
Kotlin
// reserveren(stoel_id, gebruiker_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("Zitplaats niet beschikbaar") 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()
Waarom is in Map de sleutel de sluitende haak en de waarde de openende haak? Wat zou er veranderen als je het omdraait? Wat is de complexiteit van containsValue versus get op sleutel?
/*Gegeven een string, moet een functie worden geïmplementeerd om de correctheid van de haakjesaanduiding te controleren. Elk open haakje moet overeenkomen met een bijbehorend sluitend haakje. Open en sluit haakjes moeten in de juiste volgorde staan. Types haakjes: "{", "}", "(", ")", "[", "]". Invoer: "([]){}[(()())()]" Resultaat: true Invoer: "[(])" Resultaat: false Omdat de haakjes 2 en 3 verkeerd zijn aangegeven, verschijnt de sluitende ']' eerder dan de sluitende '(' */ 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(); }
/* SELECTIE links.K, links.V1, rechts.V2 VAN links JOIN rechts ON 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 eerste; private B tweede; Pair(A eerste, B tweede) { this.eerste = eerste; this.tweede = tweede; } } private static class Triple<A, B, C> { private A eerste; private B tweede; private C derde; Triple(A eerste, B tweede, C derde) { this.eerste = eerste; this.tweede = tweede; this.derde = derde; } }