Milyen teszteseteket kell figyelembe venni a join módszerhez? Milyen optimalizációk adhatók hozzá?
Kotlin
// foglalás(hely_id, felhasználó_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("A hely nem elérhető") 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()
Miért a Map-ban a kulcs a zárójel, az érték pedig a nyitó? Mit változna, ha fordítva csinálnánk? Mi a containsValue és a get komplexitása kulcs szerint?
/* KIVÁLASZTÁS bal.K, bal.V1, jobb.V2 BÓL bal JOIN jobb ON bal.K = jobb.K; */ public <K extends Comparable<K>, V1, V2> List<Triple<K, V1, V2>> join(List<Pair<K, V1>> bal, List<Pair<K, V2>> jobb) { return null; } private static class Pair<A, B> { private A első; private B második; Pair(A első, B második) { this.első = első; this.második = második; } } private static class Triple<A, B, C> { private A első; private B második; private C harmadik; Triple(A első, B második, C harmadik) { this.első = első; this.második = második; this.harmadik = harmadik; } }
/*Adott egy karakterlánc, és implementálni kell egy függvényt a zárójelek helyességének ellenőrzésére. Minden nyitó zárójelnek meg kell felelnie egy záró zárójellel. A nyitó és záró zárójelek helyes sorrendben kell, hogy legyenek. Zárójelek típusai: "{", "}", "(", ")", "[", "]". Bemenet: "([]){}[(()())()]" Eredmény: igaz Bemenet: "[(])" Eredmény: hamis Mert a 2. és 3. zárójelet helytelenül adták meg, a záró ']' korábban jelenik meg, mint a záró '(' */ 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(); }