Python vositalari · dict, set va kortej: tez qidirish va sanash
Lug‘at va to‘plam
Easy 14 masala
BoshlashNazariya
Lug‘at va to‘plam
Hash-jadval «bu element bormi?» savoliga o‘rtacha O(1) vaqtda javob beradi.
seen = set()
for x in a:
if x in seen:
print("YES"); break
seen.add(x)
from collections import Counter
cnt = Counter(s) # har belgi necha marta
Qachon ishlatiladi
- Takrorlarni topish, juftlik izlash (
target - xoldin uchraganmi?). - Sanash: anagramma, ko‘pchilik ovozi, harflar yetarlimi.
list da x in a — O(n), set da — O(1). Katta kirishda farq hal qiluvchi.
Kortej va to‘plam amallari
Kortej (tuple) — o‘zgarmas ro‘yxat. U set elementi va dict kaliti bo‘la oladi, ro‘yxat esa bo‘la olmaydi.
visited = {(0, 0)}
dist = {(0, 0): 0}
a, b = b, a # o‘rin almashtirish ham kortej orqali ishlaydi
To‘plam (set) — takrorsiz elementlar.
a, b = {1, 2, 3}, {2, 3, 4}
a | b, a & b, a - b # birlashma, kesishma, ayirma
len(set(nums)) # nechta turli son
sorted(set(nums)) # turli sonlar o‘sish tartibida
set tartibni saqlamaydi: chiqarishdan oldin saralang.