Кои тестови случаи трябва да се разгледат за метода join? Какви оптимизации могат да бъдат добавени?
Kotlin
// резервация(седалка_id, потребител_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("Мястото не е налично") 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()
Защо в Map ключът е затварящата скоба, а стойността е отварящата? Какво ще се промени, ако направим обратното? Каква е сложността на containsValue спрямо get по ключ?
/* ИЗБОР ляво.K, ляво.V1, дясно.V2 ОТ ляво JOIN дясно ON ляво.K = дясно.K; */ public <K extends Comparable<K>, V1, V2> List<Triple<K, V1, V2>> join(List<Pair<K, V1>> ляво, List<Pair<K, V2>> дясно) { return null; } private static class Pair<A, B> { private A първи; private B втори; Pair(A първи, B втори) { this.първи = първи; this.втори = втори; } } private static class Triple<A, B, C> { private A първи; private B втори; private C трети; Triple(A първи, B втори, C трети) { this.първи = първи; this.втори = втори; this.трети = трети; } }
/*Дадена е низ, необходимо е да се имплементира функција за проверка на правилноста на означувањето на заградите. Секој отворен заграден знак треба да има соодветен затворен знак. Отворените и затворените загради треба да бидат во правилен ред. Типови на загради: "{", "}", "(", ")", "[", "]". Влез: "([]){}[(()())()]" Резултат: true Влез: "[(])" Резултат: false Затоа што заградите 2 и 3 се неправилно наведени, затворната ']' се појавува пред затворната '(' */ 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(); }