Join әдісі үшін қандай тест-кейстер қарастырылуы керек? Қандай оңтайландыруларды қосуға болады?
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 (user_id, ...) update seats set status = 'booked' where id = seat_id commit return success()
Неге Map-те жабылатын жақша кілт болса, ашылатын жақша мән болып табылады? Егер керісінше жасасақ, не өзгереді? containsValue пен get-тің күрделілігі қандай?
/* ТАҢДАУ сол жақ.K, сол жақ.V1, оң жақ.V2 АЛУ сол жақ қосылу оң жақпен ON сол жақ.K = оң жақ.K; */ public <K extends Comparable<K>, V1, V2> List<Triple<K, V1, V2>> join(List<Pair<K, V1>> left, List<Pair<K, V2>> right) { return null; } private static class Pair<A, B> { private A first; private B second; Pair(A first, B second) { this.first = first; this.second = second; } } private static class Triple<A, B, C> { private A first; private B second; private C third; Triple(A first, B second, C third) { this.first = first; this.second = second; this.third = third; } }
/*Берілген жол, жақшалардың дұрыс көрсетілуін тексеру функциясын жүзеге асыру керек. Әр ашылатын жақшаға сәйкес жабылатын жақша болуы керек. Ашылатын және жабылатын жақшалар дұрыс тәртіпте болуы керек. Жақшалардың түрлері: "{", "}", "(", ")", "[", "]". Кіріс: "([]){}[(()())()]" Нәтиже: шын Кіріс: "[(])" Нәтиже: жалған Өйткені 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(); }