Middle — Senior
Yaxın ədədləri diapazonlara toplama vəzifəsini təsvir edin.
sobes.tech Süni İntellekt
AI-dan cavab
Yaxın ədədləri diapazonlara birləşdirmək vəzifəsi, bu ədədlərdən ibarət toplusundan bütün bu ədədləri əhatə edən minimal ardıcıl interval (diapazonlar) yaratmaqdır.
Məsələn, ədədlər: [1, 2, 3, 5, 6, 8]
Birləşdirmənin nəticəsi:
- [1-3]
- [5-6]
- [8]
Bu, ardıcıl ədədləri diapazon kimi qısa şəkildə təqdim etmək mümkün olduqda, məlumatların saxlanması və ya göstərilməsini optimallaşdırmaq üçün faydalıdır.
Həllin əsas addımları:
- Rəqəmlər massivini sıralayın.
- Sıralanmış siyahı üzərində iterasiya edərək cari diapazonu formalaşdırın.
- Əgər növbəti element qonşudursa (hazırkı + 1), diapazonu genişləndirin.
- Əks halda, cari diapazonu yadda saxlayın və yeni birini başlayın.
Algoritmin mürəkkəbliyi — O(n log n), sıralama səbəbindən, burada n ədədlərin sayıdır.
Python nümunəsi:
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
# Nümunə
print(collapse_ranges([1,2,3,5,6,8])) # [(1,3), (5,6), (8,8)]