TGViewer
Golang вопросы собеседований Golang вопросы собеседований @golang_interview · 15.1K subscribers
Post #1553 3.8K
🧠 Алгоритм Флойда знают многие Go-разработчики: два указателя двигаются с разной скоростью и находят цикл в связном списке за `O(n)` времени и `O(1)` памяти.

Но есть менее известный алгоритм Брента, который решает ту же задачу и часто делает меньше переходов по Next.

Флойд:


slow := head
fast := head

for fast != nil && fast.Next != nil {
slow = slow.Next
fast = fast.Next.Next

if slow == fast {
return true
}
}


Брент работает иначе: один указатель движется постоянно, а второй используется как контрольная точка. Размер интервала постепенно удваивается:

1 → 2 → 4 → 8 → 16


power, lam := 1, 1
tortoise := head
hare := head.Next

for hare != nil && tortoise != hare {
if power == lam {
tortoise = hare
power *= 2
lam = 0
}

hare = hare.Next
lam++
}


Асимптотика та же:

O(n) по времени
O(1) по памяти

Но Брент обычно делает меньше обращений к следующему элементу списка. Если Next вычисляется дорого или данные читаются через сложную структуру, разница уже может быть заметной.

Флойда спрашивают на собеседованиях постоянно. Про Брента многие Go-разработчики вообще не слышали.
  • ❤ 16
  • 🤔 5
  • 👍 3
  • 🥰 1
More from @golang_interview
  1. Sep 19, 2026🐹 golang-set - готовые множества для Go с поддержкой дженериков Библиотека для работы с к…
  2. Sep 15, 2026Apache Kafka курс 2026: бесплатный курс по Kafka с нуля до профи на русском Kafka обучение…
  3. Sep 13, 2026🔥 AI-кодинг в Go - не главная проблема. Проблема начинается, когда код никто нормально не…
  4. Sep 13, 2026🔥 Хочешь расти в IT быстрее остальных? Перестань учиться в одиночку Можно годами смотреть…
  5. Sep 11, 2026🐹 Go: `defer f.Close()` может скрыть ошибку записи При работе с bufio.Writer данные снача…
  6. Sep 11, 2026⚡️ DeepSeek открыла веса V4.1-Flash DeepSeek выложила свежайшую DeepSeek-V4.1-Flash, мульт…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →