Почему в редакторе всё работает, а на лит коде нет

У меня есть вопросик решал литкод задачи на массивы (88. Merge Sorted Array) в редакторе vs code всё работает нормально, а на самом сайте не сортирует массив. Версия Python 3.11.7 Вот мой код:

class Solution:
    def merge(self, nums1, m, nums2, n):
        nums1 = nums1[:m]
        nums2 = nums2[:n]
        res = nums1 + nums2
        res.sort()
        return res


s = Solution()

print(s.merge([1, 2, 3, 0, 0, 0], 3, [2, 5, 6], 3))

На литкод тоже что и здесь, но без создания объекта и вывода результата функции.


Ответы (1 шт):

Автор решения: Maksim Alekseev

В этой задаче необходимо эффективно использовать память и не создавать новые объекты в памяти.

В задаче в докстринг-е, как раз это указано:

class Solution:
    def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
        """
        Do not return anything, modify nums1 in-place instead.
        """   

Do not return anything, modify nums1 in-place instead. - Не возвращайте ничего, вместо этого измените nums1 на месте.


Возможное решение:

i = m - 1
j = n - 1
last = m + n - 1
while j >= 0:
    if i >= 0 and nums1[i] > nums2[j]:
        nums1[last] = nums1[i]
        last -= 1
        i -= 1
    else:
        nums1[last] = nums2[j]
        last -= 1
        j -= 1
  • Создаем указатели на элементы массива i и j
  • И указатель на последний элемент last
  • Идем с конца и заполняем главный массив nums1 до тех пор пока не дойдем до первого элемента второго массива.
  • при каждой итерации уменьшаем указатели

88. Merge Sorted Array

→ Ссылка