Sobes.tech
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ı:

  1. Sayı dizisini sıralayın.
  2. Sıralı liste üzerinde iterasyon yaparak mevcut aralığı oluşturun.
  3. Eğer bir sonraki öğe ardışık ise (mevcut + 1), aralığı genişletin.
  4. 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)]