Koji test slučajevi treba razmotriti za metodu join? Koje optimizacije se mogu dodati?
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()
Zašto je u Map ključ zatvarajuća zagrada, a vrednost otvarajuća? Šta će se promeniti ako to uradimo obrnuto? Koja je složenost containsValue u poređenju sa get po ključu?
/*Дат је низ, потребно је имплементирати функцију за проверу исправности означавања заграда. Свака отворена заграда треба да има одговарајућу затворену заграду. Отворене и затворене заграде треба да буду у исправном реду. Типови заграда: "{", "}", "(", ")", "[", "]". Улаз: "([]){}[(()())()]" Резултат: 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(); }
/* IZBOR levo.K, levo.V1, desno.V2 IZ levo JOIN desno ON levo.K = desno.K; */ public <K extends Comparable<K>, V1, V2> List<Triple<K, V1, V2>> join(List<Pair<K, V1>> levo, List<Pair<K, V2>> desno) { return null; } private static class Pair<A, B> { private A prvi; private B drugi; Pair(A prvi, B drugi) { this.prvi = prvi; this.drugi = drugi; } } private static class Triple<A, B, C> { private A prvi; private B drugi; private C treći; Triple(A prvi, B drugi, C treći) { this.prvi = prvi; this.drugi = drugi; this.treći = treći; } }