Join usuli uchun qaysi test holatlari ko'rib chiqilishi kerak? Qaysi optimallashtirishlar qo'shilishi mumkin?
Kotlin
// buyurtma(o‘tirmoq_id, foydalanuvchi_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("O‘tirmoq mavjud emas") 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()
Mapda kalit yopilish yopish qavs bo'sh va qiymat ochilish qavs bo'ladimi? Agar teskari qilinsa nima bo'ladi? containsValue ning murakkabligi kalit bo'yicha get bilan qanday?
/* TANLASH chap.K, chap.V1, o'ng.V2 dan chap JOIN o'ng ON chap.K = o'ng.K; */ public <K extends Comparable<K>, V1, V2> List<Triple<K, V1, V2>> join(List<Pair<K, V1>> chap, List<Pair<K, V2>> o'ng) { return null; } private static class Pair<A, B> { private A bir; private B ikkinchi; Pair(A bir, B ikkinchi) { this.bir = bir; this.ikkinchi = ikkinchi; } } private static class Triple<A, B, C> { private A bir; private B ikkinchi; private C uch; Triple(A bir, B ikkinchi, C uch) { this.bir = bir; this.ikkinchi = ikkinchi; this.uch = uch; } }
/*Berilgan satr uchun, qavslarning to'g'ri ko'rsatilishini tekshirish uchun funktsiya amalga oshirilishi kerak. Har bir ochiladigan qavs mos keladigan yopiladigan qavssiz bo'lishi kerak. Ochiladigan va yopiladigan qavslar to'g'ri tartibda bo'lishi kerak. Qavs turlari: "{", "}", "(", ")", "[", "]". Kiritish: "([]){}[(()())()]" Natija: true Kiritish: "[(])" Natija: false Chunki 2 va 3-qavslar noto'g'ri ko'rsatilgan, yopiladigan ']' avval yopiladigan '(' bilan uchraydi. */ 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(); }