💡 5-BO‘LIM: Algorithms, Data Structures & Real-World Coding Patterns – savollar va javoblar


1. “Two sum” masalasi: algoritm va murakkabligi

Masala: Ikki sonni topingki, ularning yig‘indisi targetga teng bo‘lsin.

def two_sum(nums, target):
    seen = {}
    for i, num in enumerate(nums):
        diff = target - num
        if diff in seen:
            return [seen[diff], i]
        seen[num] = i

2. Sliding window misoli: Maksimum subarray sum

def max_subarray_sum(nums, k):
    window_sum = sum(nums[:k])
    max_sum = window_sum

    for i in range(k, len(nums)):
        window_sum += nums[i] - nums[i - k]
        max_sum = max(max_sum, window_sum)

    return max_sum

3. LRU Cache qanday ishlaydi?

from collections import OrderedDict

class LRUCache:
    def __init__(self, capacity):
        self.cache = OrderedDict()
        self.capacity = capacity

    def get(self, key):
        if key not in self.cache:
            return -1
        self.cache.move_to_end(key)
        return self.cache[key]

    def put(self, key, value):
        self.cache[key] = value
        self.cache.move_to_end(key)
        if len(self.cache) > self.capacity:
            self.cache.popitem(last=False)

4. Graph traversal: BFS vs DFS

from collections import deque

def bfs(graph, start):
    visited = set()
    queue = deque([start])
    while queue:
        node = queue.popleft()
        if node not in visited:
            visited.add(node)
            queue.extend(graph[node])

5. Real example: Rate limiter qanday yozasiz?

from collections import deque
import time

class RateLimiter:
    def __init__(self, max_requests, period):
        self.requests = deque()
        self.max_requests = max_requests
        self.period = period

    def allow(self):
        now = time.time()
        while self.requests and now - self.requests[0] > self.period:
            self.requests.popleft()
        if len(self.requests) < self.max_requests:
            self.requests.append(now)
            return True
        return False

6. HashMap, Set qanday ishlaydi Python’da?


7. Priority Queue (heapq) misoli

import heapq

nums = [4, 1, 7, 3]
heapq.heapify(nums)
heapq.heappush(nums, 2)
min_val = heapq.heappop(nums)

8. Recursion va Tail Recursion optimizatsiyasi


9. Sorting algoritmlari haqida nimalarni bilasan?

sorted(nums, reverse=True)  # Timsort

10. Real-world: URL Shortener qanday arxitektura bilan yoziladi?