AlgorithmUz
233 subscribers
1 photo
2 files
168 links
"Dastur bu shunchaki ma'lumotlar tuzilmalari va ular ustida ish bajaruvchi algoritmlar yig'indisi" - Ananymous.

Savol va takliflar uchun @AlgorithmUz_Feedbacks_Bot
Download Telegram
Practice time!

#practicetime

Array mavzusini mustahkamlab olish uchun unga oid 10 ta savol tashlaymiz. Ularni hech qanday qo'shimcha kutubxonalar va funksiyalar (sort(), max(), min()) ishlatmagan holda savolda aytilgan murakkablikda (O(n), O(n^2) ... ) ishlashga harakat qilib ko'ring.

Savollar:

Very easy
1. Berilgan saralanmagan arrayda max va min elementlarni toping (very easy). Iloji boricha saralamagan holda
2. 99 ta elementli array berilgan va ular ichida 1 dan 100 gacha sonlarning bittasi tushib qolgan shu sonni toping (very easy)

Easy
3. Arraydagi qaytarilgan sonlardan faqat bittasini saqlab qolish (birinchi kelganini) (easy)
4. Ikkita arrayda umumiy bo’lgan elementlarni alohida array qilish. Intersection (easy)
5. Arrayni polindromlikka tekshiring (easy)
6. Arrayni teskariga o’giring (reverse) (easy)

Intermediate
7. Saralanmagan arraydagi k chi eng kichik va eng katta elementlarni toping. Masalan {3, 5, 2, 4, 1} va k = 2 holatda mink = 2 va maxk = 4 (intermediate)
8. Arraydagi har bir element necha marta uchrashini toping. O(n) vaqtda (intermediate)
9. Ikkita saralangan arrayni qo’shing va natijaviy array ham saralangan bo’lib qolsin (intermediate)

Hard
10. Arraydagi maximum summaga ega bo’lgan subarrayni toping. Arrayda manfiy elementlar ham mavjud. O(n3), O(n2), O(n) vaqtlarda yoki eng tez holatga harakat qilib ko’ring (hard)

P.S: Yechimni hech qayerga yuborish shart emas! Yechimlar ertaga e'lon qilinadi.

P.P.S: Savollarda tushunmovchilik bo'lsa kommentariyalarda yoki guruhimizda so'rashingiz mumkin

Kanalga ulanish:
Algorithms Uzbekistan
Practice time!

#practicetime

Stack mavzusini mustahkamlab olish uchun unga oid atigi 2 tagina masala tashlaymiz. Ularni ishlashda tayyor Stack klassidan foydalanishingiz mumkin. Bunda asosiysi nima qilishni topa olish.

Masalalar:
1. 3 xil qavslardan () {} iborat ifoda berilgan. Unda barcha qavslar to'g'ri qo'yilganini tekshirish kerak.
2. Bir xil qavslar () qatnashgan ifoda berilgan. Unda ortiqcha qavs ishlatilganini tekshirib ko'rish kerak. (Qavslar to'g'ri ishlatilgani aniq)
Masalan:
a) ((x+y))z - ortiqcha qavs
b) (x-y)/z - ortiqcha qavs yo'q
c) ((x+y) ((a-b))) - ortiqcha qavs

P.S: Yechimni hech qayerga yuborish shart emas! Yechimlar ertaga e'lon qilinadi.

Kanalga ulanish:
Algorithms Uzbekistan
Ikkilik qidiruv turlari!

#practicetime

Ikkilik qidiruv algoritmining ham bir nechta turlari bor. Har biri qaysidir vaziyat uchun kerak bo'lib qoladi. Sizning vazifangiz shularni o'zingiz mustaqil implementatsiya qilishga urinib ko'rish

Masalalar:
Oson:
1. Saralangan arraydan qidirilayotgan element indeksini (ko'p bo'lsa ixtiyoriy bittasini) qaytaring, topilmasa -1 qaytaring.
Masalan: 1 2 2 2 4 5 6 va x = 2 da javob 1, 2, 3 dan ixtiyoriy bittasi

O'rtacha:
2. Saralangan arraydan qidirilayotgan elementning birinchi uchragan indeksini qaytaring, topilmasa -1 qaytaring.
Masalan: 1 2 2 2 4 5 6 va x = 2 da javob 1
3. Saralangan arraydan qidirilayotgan element oxirgi uchragan indeksini qaytaring, topilmasa -1 qaytaring.
Masalan: 1 2 2 2 4 5 6 va x = 2 da javob 3

Qiyinroq:
4. Saralangan arraydan qidirilayotgan elementning birinchi uchragan indeksini qaytaring, topilmasa qidirilayotgan element turishi kerak bo'lgan joydan chapdagi element indeksini qaytaring.
Masalan: 1 2 2 2 4 5 6 va x = 3 da javob 3
5. Saralangan arraydan qidirilayotgan elementning oxirgi uchragan indeksini qaytaring, topilmasa qidirilayotgan element turishi kerak bo'lgan joydan o'ngdagi element indeksini qaytaring.
Masalan: 1 2 2 2 4 5 6 va x = 3 da javob 4

❗️Barcha masalalar ikkilik qidiruvdan foydalanib ishlanishi shart!

P.S: Yechimni hech qayerga yuborish shart emas! Yechimlar tez orada e'lon qilinadi.

Kanalga ulanish:
Algorithms Uzbekistan
​​Masalalar vaqti!

#practicetime #recursion #chapter6

Rekursiyaning eng muhim jihatlarini tushuntirib o'tdik. Mavzuni qanchalik tushunganingizni sinash uchun quyidagi masalalarni ishlab ko'ring.

Eslatma: Masalaning asosiy yechim funksiyasi rekursiv bo'lishi kerak! No loops!

1. Berilgan N sonining raqamlari yig'indisini toping.
2. Str satr va C simvol berilgan. Shu simvol satrda necha marta uchrashini aniqlang.
3. N sonini M darajaga oshirish funksiyasi (Binar daraja shart emas).
4. Berilgan N sonigacha bo'lgan sonlar yig'indisini toping.
5. N faktorialni hisoblang.

Bonus: N-Fibonachchi sonini toping.

Yana bir bor eslatma bu masalalarni faqat rekursiya yordamida yechishingiz kerak. Agar yechishda qiynalsangiz, oldingi mavzularni yana bir ko'rib chiqing. Rekursiya asosiy shartlarini eslang. Yoki guruhimizda ozroq yordam so'rang.

❗️Agar masalalar siz uchun juda ham oddiy tuyulsa ham hafsalangiz pir bo'lmasin. Rekursiya bo'limi oxirida qiyinroq masalalar ham beriladi.

Masalalar yechimini hozircha hech qayerga yuborish shart emas. Yechimlar kechroq e'lon qilinadi!

Kanalimizga ulanish:
Algorithms Uzbekistan
Yuqoridagi masalalar yechimi!

#practicetime #recursion #chapter6 #solutions

Barcha masalalarni yecha oldingiz degan umiddamiz. O'z yechimlaringizni quyidagi yechimlar bilan solishtirib ko'rishingiz mumkin.

❗️Yuqoridagi masalalarga bu yechimlar eng optimal emas. Ba'zi masalalar uchun juda yomon ham. Lekin, bundan asosiy maqsad rekursiyani tushunib olish, optimal yechim topish emas.

P.S: Yechimlar Javada yozilgan, agar kimdir C++ da barcha masalalar uchun yechimni guruhga yoki @AlgorithmUz_Feedbacks_Bot ga jo'natsa, xursand bo'lardim. Bu yechimlar ham avtori bilan e'lon qilinadi.

Kanalimizga ulanish:
Algorithms Uzbekistan

Kodlarni GitHubdan ham yuklab olishingiz mumkin:
Kanalimiz GitHub repositoriyasi
Bizlarni kutganlarga Assalomu alaykum!

Bugundan darslarimiz yana davom etadi.

Rekursiya mavzusi oxirida qiyinroq masalalar va'da qilgan edik. Bugun shularni sizga taqdim qilamiz:

Rekursiyaga oid qiyinroq masalalar!

#practicetime #recursion

№1. Satr berilgan uni teskarisiga o'giring (reverse)
№1.2 Satrdagi so'zlar o'rnini teskarisiga o'giring
№2. Satrni palindromlikka tekshiring (isPalindrome)
№3. So'zlardan iborat array berilgan, har bir so'zni bosh harfini katta qilib chiqish kerak (capitalize)
№3.2. Tepadagi masaladagi so'zlarni hamma harflarini kattasi bilan almashtirib chiqing
№4. Faqat qo'shish amalidan foydalanib a×b ni hisoblang
№5. Sonlardan iborat array berilgan shundagi max elementni toping

Albatta, masalalarni faqat rekursiya yordamida ishlashga harakat qiling!

Javoblar biroz vaqtdan keyin e'lon qilinadi. O'ylab ko'rishingiz uchun yetarlicha vaqt bor.

🤝 Biz uchun eng yaxshi reklama — bu siz tomoningizdan qilingan reklama!

Kanalga ulanish:
Algorithms Uzbekistan