LeetCodin
1.56K subscribers
159 photos
3 videos
2 files
299 links
LeetCode 1600+
🇺🇿🇺🇸
Motto: Победа любит подготовку

- Getting ready for FAANG | FAANGga tayyorlanamiz
- Data Structures and Algorithms | Ma'lumotlar tuzilmalari va Algoritmlar
- SE at Deloitte 🇺🇸
- LeetCode: https://leetcode.com/tbekpro/
Download Telegram
Tez Tartiblash. Tartiblash algoritmlari.

Salom! Bugun ham katta mavzu - Tez tartiblash [Quick sort].

😇 Github: QuickSort
Time complexity:
Eng yaxshi holat: O(N * logN),
Eng yomon holat: O(N ^ 2).
🔎 Space complexity: O(1).

🧑‍💻 G'oya 🧑‍💻

Quick sort bu tezligi kvadrat funksiyaga ega bo'lgan tartiblash algoritmlardan [Bubble sort, Selection sort, and Insertion sort] ancha tezroq ishlaydigan algoritm (o'rta holatda).

Bu algoritm uchta qismdan iborat:
- Massivni yoki uning qismini ikki qismga bo'lish. Chap qismida asos qilib olingan sondan kichikroq va o'ng qismida shu sondan kattaroq elementlar joylashtiriladi.
- Huddi shu metodni rekursiv chaqiruv orqali chap qism uchun ishlatish.
- Shu metodni rekursiv chaqiruv orqali bu safar o'ng qism uchun ishlatish.

Massivni kichikroq qismlarga bo'lish deganda massivni ikkita guruhga asos (tayanch) qilib oningan songa qarshi bo'lishni tushunish kerak. Shunda chap guruhdagi sonlar tayanch sondan kichikroq va o'ng guruhdagi sonlar esa shu tayanch sonidan kattaroq bo'lishi lozim.

🧑‍💻 Algoritm 🧑‍💻

Tepada Github-dagi yechimga havola qoldirganman.
Shu yechimda hamma logic QuickSort klassining ichida. Bu klassda array massivi bor. U tartiblash uchun berilgan massivga ko'rsatgichni saqlaydi.
QuickSort klassida yana 4 metod bor. Bular quickSort(), recursiveQuickSort(), partitionIt() va swap().

👩‍💻 quickSort()
Klassga tegishli massiv o'zgaruvchisiga berilgan massivni yozib qo'yadi. Keyin esa recursiveQuickSort() rekursiv metodini 0 va oxirgi indekslar uchun chaqiradi.

👩‍💻 recursiveQuickSort()
- Boshida rekursiya uchun asosiy holat tekshiriladi.
- else blokining ichida quyidagi 4ta harakat bajariladi:
1. Tayanch sonini tanlaysiz. Buning uchun berilgan diapazondan oxirgi elementni tanlaysiz.
2. partitionIt() metodini chaqirish orqali shu tayanch sonining indeksi aniqlanadi. Bu metod tayanchdan kichik sonlarni chapga va kattaroq sonlarni o'nga joylashtiradi.
3. Keyin rekursiv chaqiruv orqali recursiveQuickSort() metodini chap guruh uchun chaqirasiz.
4. Bundan keyin rekursiv chaqiruv orqali recursiveQuickSort() metodini o'ng guruh uchun chaqirasiz.

👩‍💻 partitionIt()
Metodning boshlanishida berilgan diapazon [left - right] ichida bosh va oxirgi indekslar uchun alohida int o'zgaruvchilarini yaratasiz.
Bulardan keyin bitta tashqi va ikkita ichki while loop-lar joylashgan.
- Birinchi ichki while loop tayanch sondan katta bo'lgan birinchi sonning indeksini topib beradi.
- Ikkinchi ichki while loop esa tayanch sondan kichik bo'lgan oxirgi sonning indeksini topadi.
- Agar shu ikkita indeks teng bo'lsa yoki leftPointer rightPointer-dan kattaroq bo'lsa, unda berilgan diapazondagi sonlar tayanch songa nisbatan to'g'ri taqsimlangan. Bu holatda tashqi loop-dan chiqib ketiladi.
- Agar chap ko'rsatgich indeks o'ng ko'rsatgich indeksdan kichik bo'lsa, biz shu indeks ostida joylashgan elementlarning swap() orqali joylarini almashtiramiz.
Bu harakatlar orqali siz tayanch sondan kichik sonlarni chapga va undan katta sonlarni unga nisbatan o'nga joylashtirasiz.

Tashqi while loop-dan chiqqaningizda swap() orqali tayanch sonini o'z o'rniga qo'yasiz.
Oxirida esa shu sonning indeksini qaytarasiz.

👩‍💻 swap()
Bu oddiy ikkita elementni indekslari bo'yicha joylarini almashtiruvchi metod.

Manbalar:
1. Data Structures and Algorithms in Java. R. Lafore.
2. Quick Sort in 4 minutes
3. Quick Sort gif

Bugunga shu.
Agar xatolar topsangiz yoki qaysidir qism bo'yicha savollaringiz bo'lsa, comments-da yozing.

Omad! ✌️😎

@LeetCodin
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥3🎃3🐳1
Shell saralash algoritmi.

Salom! Bugun yangi Shell saralash algoritmini ko'rib chiqaman.

😇 Github: ShellSort
Time complexity:
O'rtacha - O(N ^ (3/2)),
Eng yomon holatda - O(N ^ 2)
🔎 Space complexity: O(1)

🧑‍💻 G'oya 🧑‍💻

Shell sort, uni 1959-yilda kashf etgan, Donald L. Shell-dan nomini olgan. Shell sort Kiritish orqali saralash usulining asosida ishlaydi. Kiritish orqali saralash algoritmida siz elementlarni faqat bir pozitsiyaga sura olasiz. Agar element massivning oxiridan boshiga joylashtirilishi kerak bo'lsa, siz ko'p swap operatsiyasini bajarasiz.

Shell sort algoritmining g'oyasi - bu uzoq masofada joylashgan elementlarni saralash. Bu algoritm orqali siz elementlarni h uzoqlikda saralangan qilasiz. Shu h-ning qiymati 1ga teng bo'lmagunicha uni kamaytiraverasiz. h uzoqlikda saralangan degani bir biridan h uzoqlikda joylashgan elementlarning har bir ro'yxatda saralangan holatda bo'lishi.

🧑‍💻 Algoritm 🧑‍💻

h = h * 3 + 1 -> bu Knuth-ning Interval ketma-ketliklar uchun formulasi.

1. Birinchi while loop berilgan massiv hajmi uchun to'g'ri h-ni topish uchun ishlatasiz.

2. Keyin esa nested loop ishlatasiz.
- Birinchi tashqi while loop-ni h-ning qiymatini formula bo'yicha kamaytirish uchun ishlatasiz.
- Ichki for loop-da esa Kiritish orqali saralash [Insertion sort] algoritmini h uzoqlikda joylashgan elementlar uchun ishlatasiz.
- Ichki while loop Kiritish orqali saralashga o'xshab, h uzoqlikda joylashgan elementlar uchun katta elementlarni o'nga suradi va tanlangan elementni o'z joyiga qo'yadi.

Manbalar:
1. Data Structures and Algorithms in Java. R. Lafore.
2. Geeksforgeeks
3. GIF

Rahmat!
Omad! ✌️😎

@LeetCodin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🐳5🔥2🎉2👀1
🇺🇿
Menga yordamingiz kerak bo’lmoqda:

Qaysi mavzular haqida postlar yozishimni xohlaysiz?

🇺🇸
I need your help:

What topics do you want me to cover in future posts?
👍165
Today is the 300th day of the year.

Bugun yilning 300-kuni ekan.

@LeetCodin
23👍12🐳32
Hammaga salom!

Kuni kecha Tizimlar dizayni (System Design) kursini sotib oldim.

Uning muallifi Mikhail Smarshchok, staff muhandisi sifatida faoliyat yuritadi. Menga uning YouTube’dagi 5 ta video darslikdan iborat kichik kursi juda yoqqan edi. U mavzularni juda aniq va tushunarli tarzda tushuntiradi.

Aytishadiku, “chaynab og’zimga solib qo’ygan” deb. Bu odam ham xuddi shunday tushuntirar ekan. Eng qizig’i, videolarning tavsiflarida u o’zining to’liq kursiga havola qoldirgan ekan. Va bu kurs, tasavvur qiling-a, LeetCode’da joylashgan ekan.

Men shu vaqtning o’zida:


@LeetCodin
👍35😁1521
JR TwitGram 🥂
Asosiy kanalda yo’qlar uchun. Kurs chiqdi: O’zingizning ORMingizni Yozing

3 kun davomida pasaytirilgan narxda bo’ladi. 250K emas, 200K.
Jahongir (a.k.a. KaHoGi) kursdoshim o'z ORM - Object Relational Mapping yaratish kursini yozibdi.

Agar qiziq pet project qilaman va uni portfolio'ga qo'shaman desangiz, bu kurs siz uchun!
👍29🔥5😱2
LeetCode Rewind 2024

@LeetCodin
👍40💯8😱65🔥3😎2
🇬🇧1500 LeetCode problems solved.

Each one a lesson, a challenge, and a step forward.
The journey continues.


🇺🇿1500 ta LeetCode masalasi yechildi.
Sayohat davom etadi.

@LeetCodin
🔥68👍7👏5🍾321
Hammaga salom! Vaqti-vaqti bilan obunachilar savol berib turishadi. Shunday bir savol-javobni shu yerga joylashtiraman.


Savol: "Hozirda har kuni DSA o‘rganib, LeetCode’da masalalar yechib boryapman.
Lekin hozir FAANG’ning holati unchalik yaxshi emasga o‘xshaydi, chunki layoffs bo‘lib turibdi.

Shu sababli, ishxonada o‘zimni ko‘rsatish va tezroq raise olish uchun qanday maslahat bera olasiz?"


Javob: "DSA va LeedCode bilan shug'ullanayotganingiz juda ham zo'r! Keep it up!

FAANG'da har doim layoff bo'ladi va odamlarni ishga olishni to'xtatmaydi hech qachon. Odatda "bottom 5%" ishdan bo'shatishadi.

Savolingizga 2ta maslahatim bor:
1. Boshqa tajribali dasturchilarga ham huddi shunday savol yozib ko'ring. Javoblarni yig'ib, tahlil qilib, o'zingizga to'g'irlab, keyin harakat qiling.

2. Mening "2 cents" bu haqida quyidagicha:
O'zingizga ko'proq mas'uliyat oling.
Masalan:
- Team lead'ga borib, "sizda loyihamiz bo'yicha qanday taraf (part/volume of work) borki - shuni boshqa odam qilsa, asosiy ishga qo'l urardim [asl long-term ishlarga vaqt ko'payardi]" - deb so'rab ko'ring. Loyihaning shu tarafini owner'i bo'ling. Shunday yaxshi o'rganingki - hamma sizga kelib savol so'rasin shu haqida.

FAANG kompaniyalarida siz agar mid-level'dan senior'ga o'tmoqchi bo'lsangiz, siz senior developer'ning ishini bir oz vaqt davomida qilib kelayotgan bo'lishingiz kerak.

Bu degani sizga senior'likni boshqa odam berishi kerak emas, har bir harakatingiz "Men seniorman. Senior dev bunday holatda qanday harakat qilishi lozim?" - degan fikr bilan boshlanishi kerak.

O'zingizga boshqa odamning ish o'rnidan qarab ko'ring. Masalan:
- Tasavvur qiling siz shu biznesning egasisiz. Sizga har doim persistent and accountable odamlar yetishmaydi. Unday odamlarning o'zi kamdan-kam. Agar accountable odamni topib olsangiz, uni ishda lavozimda ko'tarib, maksimal darajada qoldirgingiz keladi - to'g'rimi? Bundan xulosa - men shunday odam bo'lishim kerak."


Siz esa nima deb o'ylaysiz?
@LeetCodin
🔥42👍9💯41🏆1
I am now in Google Warsaw.
🔥40❤‍🔥7👍7🆒2
The hardest part of the interview is being able to relax.

@Leetcodin
👍31🤣127💯4😁1
Maktab davrida eng yaxshi ko‘rgan ustozim — matematika o‘qituvchim — bir gapni tez-tez aytar edilar: «Медленно поспешайте».
Tarjimasi: “Sekin shoshilinglar”.

@Leetcodin
🔥26😁2013👍3
“The voice inside that's never satisfied with your achievements isn't your insecurity.

It's the part of you that knows you can do more.”
Alex Hormozi (c)

@Leetcodin
👍32🔥21💯6👏32
🇺🇸1600 LeetCode problems solved.

🇺🇿1600ta LeetCode masala -> done.

@LeetCodin
👍43🔥226🍾42💯1
🇺🇿 LeetCode'da masalalarni yechmay yurganimga 3-4 oy bo'ldi. Yaqinda yana sekin-asta qayta boshladim. Ko'p narsalarni unutganman deb o'ylagandim. Ammo bugun o'rta darajadagi (medium level) backtracking algoritmiga asoslangan masalani 10 daqiqada, birinchi urinishda yechishga muvaffaq bo'ldim. Vaziyat men o'ylagandek yomon emas ekan! 😁 Juda xursandman.

Mana o'sha masala: 3723. Maximize Sum of Squares of Digits

🇺🇸 It's been 3-4 months since I last solved problems on LeetCode. Recently, I started picking it up again slowly. At first, I thought I'd forgotten a lot. But today, I managed to solve a medium-level backtracking algorithm problem in 10 minutes on my first try. Turns out, things aren't as bad as I thought! 😁 I'm thrilled.

Here's the problem: 3723. Maximize Sum of Squares of Digits

😊👌
🔥29👍10🤯2
Hammaga salom.

Bugun Google’ning Kaggle platformasida multi-agent workflow workshop ustida ishladim. Unda agentlar yaratib, har birining vazifasini tayinlab, ularga bitta kattaroq vazifa berish mumkin ekan.

Ushbu workshop’da ikki agent yaratdim: bittasiga research qilish, ikkinchisiga esa summary qilish vazifasini berdim. So‘ng asosiy run qiluvchi tool’ga savol berdim:

Savol: “If we read all the books of Nassim Taleb, what are the main ideas he wants us to really hear, written in-between the lines?”


Javob: "<h1>Nassim Taleb's Core Ideas: Beyond the Obvious</h1>

Nassim Taleb's extensive body of work, when read between the lines, emphasizes a profound distrust of predictability and a deep understanding of the inherent uncertainty that governs our world. His core message revolves around the following key ideas:

* The Pervasiveness of \"Black Swans\": Taleb highlights that history is disproportionately shaped by rare, high-impact, and unpredictable events, termed \"Black Swans.\" We tend to rationalize these events in hindsight, failing to grasp their true random nature and our profound unpreparedness for them. He critiques traditional fields like economics for their over-reliance on predictable models that ignore these outliers.

* Embracing \"Antifragility\": Beyond mere resilience (withstanding shocks), Taleb champions \"antifragility\" – the ability of systems to not just survive but actually *thrive* and improve from volatility, disorder, and randomness. He suggests that instead of seeking stability, we should aim to build systems that benefit from chaos.

* Skepticism Towards Predictions and Experts: Taleb urges a healthy skepticism regarding forecasts and the pronouncements of experts. He posits that negative knowledge (understanding what *doesn't* work) is more reliable than positive knowledge (claiming to know what *does* work), implying that true learning often comes from identifying and eliminating errors.

* The \"Barbell Strategy\": To navigate uncertainty, Taleb advocates for a \"barbell strategy.\" This involves extreme caution in most areas while simultaneously embracing high-risk, high-reward ventures. The goal is to minimize downside risk and leave oneself open to the potential benefits of unpredictable positive events.

In essence, Taleb challenges us to fundamentally rethink our relationship with risk, prediction, and uncertainty, encouraging a mindset that is not just resilient but actively benefits from the unpredictable nature of existence."

Chakki emas 🧐
🔥15👍5🤔2