Программа курса:
Задача 15: Объединение отсортированных массивов
Напишите определение функции def sort_merge(nums1, m, nums2, n), которая принимает два массива целочисленных значений nums1 и nums2, отсортированных в неубывающем порядке, и два целых числа m и n, которые представляют собой количество элементов в nums1 и nums2 соответственно.
Объедините nums1 и nums2 в один массив, отсортированный в неубывающем порядке.
Функция должна вернуть не новый массив, а данный вам массив nums1, который будет представлять собой результирующий отсортированный массив. Чтобы результат объединения поместился в nums1, он имеет длину m + n, где первые m элементов - это элементы, которые должны быть отсортированы, а n элементов равны 0 и должны быть проигнорированы. nums2 имеет длину n.
Пример 1:
Ввод: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
Вывод: [1,2,2,3,5,6]
Пояснение: Мы объединяем массивы [1,2,3] и [2,5,6]. Результат объединения - [1,2,2,3,5,6], где подчеркнутые элементы - это элементы из массива nums1.
Пример 2:
Ввод: nums1 = [1], m = 1, nums2 = [], n = 0
Вывод: [1]
Пояснение: Мы объединяем массивы [1] и []. Результат объединения - [1].
Пример 3:
Ввод: nums1 = [0], m = 0, nums2 = [1], n = 1
Вывод: [1]
Пояснение: Мы объединяем массивы [] и [1]. Результат объединения - [1]. Обратите внимание: так как m = 0, в массиве nums1 нет элементов. 0 нужен только для того, чтобы результат объединения массивов поместился в nums1.
xsnm
,def sort_merge(nums1,m,nums2,n):
if not nums1:
nums1.extend(nums2)
return nums1
if nums1[0] == 0:
nums1 = nums1[1:]
return sort_merge(nums1,m,nums2,n)
if nums1[-1] == 0:
nums1 = nums1[:-1]
return sort_merge(nums1,m, nums2,n)
for k in range(len(nums2)):
for t in range(len(nums1)):
if nums2[k]<=nums1[t]:
nums1.insert(t,nums2[k])
break
elif nums2[k]>nums1[t] and t==len(nums1)-1:
nums1.append(nums2[k])
break
# print(nums1)
return nums1