1) Two Pointers Algoritmi

Two Pointers algoritmi — bu ikkita ko‘rsatkich (pointer) yordamida massiv yoki matnni O(n) vaqt murakkabligida samarali ko‘rib chiqish usuli.

Algoritm ishlash tartibi:

  1. Ikkita pointer (ko‘rsatkich) tanlanadi:
  2. While tsikli orqali pointerlar harakatlantiriladi:
  3. Pointerlar bir-biri bilan to‘qnashguncha yoki shart buzilmaguncha jarayon davom etadi.

📌 Qo‘llash misollari:

Palindrom tekshirish (string'ni boshidan va oxiridan solishtirish).

Ikkita element yig‘indisini topish (Two Sum problem).

Massivni teskariga o‘girish (Reversing an array).

Ko‘p hollarda O(n) vaqt murakkabligida ishlaydi.

2) Slow & Fast (Turtle & Hare)

Bu algoritm ikki ko‘rsatkich (pointer) bilan ishlaydi: sekin (slow) va tez (fast).

Tez pointer sekin pointerga qaraganda ikki barobar tez harakatlanadi. Bu usul odatda Linked List dagi siklni topish yoki o‘rtacha elementni aniqlashda ishlatiladi.

Ma'no: Bitta pointer sekin, ikkinchisi tez harakatlanadi.

Qachon ishlatiladi?: Linked List siklini aniqlash, o‘rtacha elementni topish.

Ishlash printsipi:

  1. Ikki pointer bor:
  2. Agar fast pointer null bo‘lib qolsa, sikl yo‘q.
  3. Agar fast == slow bo‘lsa, sikl mavjud.

Real hayotdagi misol: 2 kishi yugurmoqda. Biri tezroq bo‘lsa, agar track cheksiz bo‘lsa, u sekin yugurayotgan odamni quvib yetadi.