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 <= 105Bog'langan ro'yxatdagi
pos-1yoki 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?