Почему в редакторе всё работает, а на лит коде нет
У меня есть вопросик решал литкод задачи на массивы (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до тех пор пока не дойдем до первого элемента второго массива. - при каждой итерации уменьшаем указатели