Jakie przypadki testowe należy rozważyć dla metody join? Jakie optymalizacje można dodać?
Kotlin
// rezerwacja(siedzenie_id, user_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("Miejsce niedostępne") 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()
Dlaczego w Map kluczem jest nawias zamykający, a wartością nawias otwierający? Co się zmieni, jeśli odwrócimy? Jaka jest złożoność containsValue w porównaniu do get po kluczu?
/*Dany jest ciąg znaków, konieczne jest zaimplementowanie funkcji do sprawdzania poprawności wskazania nawiasów. Każdy nawias otwierający musi mieć odpowiadający mu nawias zamykający. Nawiasy otwierające i zamykające muszą występować w poprawnej kolejności. Typy nawiasów: "{", "}", "(", ")", "[", "]". Input: "([]){}[(()())()]" Wynik: true Input: "[(])" Wynik: false Ponieważ nawiasy 2 i 3 są niepoprawnie wskazane, zamykający ']' pojawia się przed zamykającym '(' */ 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(); }
/* WYBIERZ lewy.K, lewy.V1, prawy.V2 Z lewy DOŁĄCZ prawy NA lewy.K = prawy.K; */ public <K extends Comparable<K>, V1, V2> List<Triple<K, V1, V2>> join(List<Pair<K, V1>> lewy, List<Pair<K, V2>> prawy) { return null; } private static class Pair<A, B> { private A pierwszy; private B drugi; Pair(A pierwszy, B drugi) { this.pierwszy = pierwszy; this.drugi = drugi; } } private static class Triple<A, B, C> { private A pierwszy; private B drugi; private C trzeci; Triple(A pierwszy, B drugi, C trzeci) { this.pierwszy = pierwszy; this.drugi = drugi; this.trzeci = trzeci; } }