Задача 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.

0

Комментарии

xsnm_avatar
xsnm
,
7 месяцев, 5 дней назад

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

0

Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии