Middle — Senior
Тавсиф кунед вазифаи ҷамъоварии рақамҳои ҳамсоя дар доираҳо.
sobes.tech AI
Ҷавоб аз AI
Вазифаи якҷоя кардани рақамҳои наздик ба диапазонҳо иборат аст аз сохтани камтарин шумораи интервалҳои пайваст (диапазонҳо) ки ҳамаи ин рақамҳоро бе ягон холӣ мепӯшонанд.
Масалан, рақамҳо ҳастанд: [1, 2, 3, 5, 6, 8]
Натиҷаи якҷоякунӣ:
- [1-3]
- [5-6]
- [8]
Ин барои оптимизатсияи нигоҳдорӣ ё намоиши маълумотҳо, вақте ки рақамҳои пайдарпай метавонанд ҳамчун диапазон кӯтоҳона ифода шаванд, муфид аст.
Қадамҳои асосии ҳалли:
- Массивро аз рақамҳо тартиб диҳед.
- Дар рӯйхати тартибдодашударо такрор кунед ва диапазони ҳозираро созмон диҳед.
- Агар ояндаи унсур ҳамсоя бошад (ҳозира + 1), диапазонро васеъ кунед.
- Агар не, диапазони ҳозираро сабт кунед ва нав оғоз кунед.
Масоили мураккабии алгоритм — O(n log n) бо сабаби тартиб додан, ки дар он n шумораи рақамҳо мебошад.
Масалан дар Python:
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
# Масалан
print(collapse_ranges([1,2,3,5,6,8])) # [(1,3), (5,6), (8,8)]