Middle — Senior
Komşu sayıları aralıklara dönüştürme görevini açıklayın.
sobes.tech yapay zeka
AI'dan gelen yanıt
Yakın sayıları aralıklar halinde birleştirme görevi, bu sayılardan oluşan kümeden tüm bu sayıları kapsayan minimum sayıda ardışık aralık (aralıklar) oluşturmaktır.
Örneğin, sayılar şunlardır: [1, 2, 3, 5, 6, 8]
Birleştirme sonucu:
- [1-3]
- [5-6]
- [8]
Bu, ardışık sayıları aralık olarak kompakt şekilde temsil edilebildiği durumlarda veri depolama veya görüntülemeyi optimize etmek için faydalıdır.
Çözümün temel adımları:
- Sayı dizisini sıralayın.
- Sıralı liste üzerinde iterasyon yaparak mevcut aralığı oluşturun.
- Eğer bir sonraki öğe ardışık ise (mevcut + 1), aralığı genişletin.
- Eğer değilse, mevcut aralığı kaydedin ve yeni bir aralık başlatın.
Algoritmanın karmaşıklığı — O(n log n), sıralama nedeniyle, burada n sayıların sayısıdır.
Python örneği:
def collapse_ranges(nums):
if not nums:
return []
nums = sorted(set(nums))
ranges = []
start = prev = nums[0]
for num in nums[1:]:
if num == prev + 1:
prev = num
else:
ranges.append((start, prev))
start = prev = num
ranges.append((start, prev))
return ranges
# Örnek
print(collapse_ranges([1,2,3,5,6,8])) # [(1,3), (5,6), (8,8)]