¿Qué casos de prueba se deben considerar para el método join? ¿Qué optimizaciones se pueden agregar?
Kotlin
// book(seat_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("Seat isnt available") insert into bookings (user_id, seat_id, status, created_at) values (used_id, ...) update seats set status = 'booked' where id = seat_id commit return success()
¿Por qué en Map la llave es la llave de cierre y el valor la llave de apertura? ¿Qué cambiaría si se invirtiera? ¿Cuál es la complejidad de containsValue frente a get por clave?
/*Dada una cadena, es necesario implementar una función para verificar la corrección en la indicación de los paréntesis. Cada paréntesis abierto debe tener un paréntesis cerrado correspondiente. Los paréntesis abiertos y cerrados deben estar en el orden correcto. Tipos de paréntesis: "{", "}", "(", ")", "[", "]". Entrada: "([]){}[(()())()]" Resultado: true Entrada: "[(])" Resultado: false Porque los paréntesis 2 y 3 están indicados incorrectamente, la cerradura ']' aparece antes que la cerradura '('*/ 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(); }
/* SELECCIONAR izquierda.K, izquierda.V1, derecha.V2 DESDE izquierda UNIR derecha EN izquierda.K = derecha.K; */ public <K extends Comparable<K>, V1, V2> List<Triple<K, V1, V2>> join(List<Pair<K, V1>> izquierda, List<Pair<K, V2>> derecha) { return null; } private static class Pair<A, B> { private A primero; private B segundo; Pair(A primero, B segundo) { this.primero = primero; this.segundo = segundo; } } private static class Triple<A, B, C> { private A primero; private B segundo; private C tercero; Triple(A primero, B segundo, C tercero) { this.primero = primero; this.segundo = segundo; this.tercero = tercero; } }