Linked List Cycle
head
berilgan, bog'langan ro'yxatning head
holda, bog'langan ro'yxatda tsikl bor yoki yo'qligini aniqlang.
Agar roʻyxatda keyingi
koʻrsatkichni doimiy ravishda kuzatib borish orqali yana yetib borish mumkin boʻlgan tugun boʻlsa, bogʻlangan roʻyxatda tsikl mavjud. Ichkarida pos
dumining keyingi
koʻrsatkichi bogʻlangan tugun indeksini belgilash uchun ishlatiladi.
Eʼtibor bering, pos
parametr sifatida oʻtkazilmaydi.
Agar bog'langan ro'yxatda sikl bo'lsa, true
qiymatini qaytaring. Aks holda, false
qaytaring.
Example 1:

Input: head = [3,2,0,-4], pos = 1 Output: true Explanation: Bog'langan ro'yxatda tail 1-tugunga (0-indekslangan) ulanadigan tsikl mavjud.
Example 2:

Input: head = [1,2], pos = 0 Output: true Explanation: Bog'langan ro'yxatda tail 0-tugunga (0-indekslangan) ulanadigan tsikl mavjud.
Example 3:

Input: head = [1], pos = -1 Output: false Explanation: Bog'langan ro'yxatda tsikl mavjud emas.
Constraints:
Ro'yxatdagi tugunlar soni
[0, 104]
oralig'ida.-105 <= Node.val <= 105
Bog'langan ro'yxatdagi
pos
-1
yoki valid indeks.
Follow up: O(1)
(ya'ni doimiy) xotiradan foydalanib, uni hal qila olasizmi?
My Solution
func hasCycle(head *ListNode) bool {
slow, fast := head, head
for fast != nil && fast.Next != nil {
fast = fast.Next.Next
slow = slow.Next
if fast == slow {
return true
}
}
return false
}
© Leetcode link
Last updated
Was this helpful?