Leetcode 88 объединенный отсортированный массив python3 вопрос нарезки - PullRequest
0 голосов
/ 10 февраля 2020

Вот вопрос кода leetcode:

Учитывая два отсортированных целочисленных массива nums1 и nums2, объединить nums2 в nums1 как один отсортированный массив.

Примечание:

Число элементы, инициализированные в nums1 и nums2, равны m и n соответственно. Вы можете предположить, что nums1 имеет достаточно места (размер больше или равен m + n) для хранения дополнительных элементов из nums2. Пример:

Ввод: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3

Выход: [1,2,2,3,5,6]

https://leetcode.com/problems/merge-sorted-array/

Мой вопрос - в чем разница между "nums1" и "nums1 [: ] "in" брутальная сила 1 "&" брутальная сила 2 "?

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.
        """

        nums1=sorted(nums1[0:m]+nums2[0:n])

        return nums1

возврат, что неверно.

Your input
[1,2,3,0,0,0]
3
[2,5,6]
3
Output
[1,2,3,0,0,0]
Expected
[1,2,2,3,5,6]

решение 2, что правильно

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.
        """

        nums1[:]=sorted(nums1[0:m]+nums2[0:n])

        return nums1[:]


Your input
[1,2,3,0,0,0]
3
[2,5,6]
3
Output
[1,2,2,3,5,6]
Expected
[1,2,2,3,5,6]

1 Ответ

1 голос
/ 10 февраля 2020

Ваш код, включая строку do c:

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

       nums1=sorted(nums1[0:m]+nums2[0:n])

       return nums1

Не уверен, какая часть "Ничего не возвращать" вдохновила вас на возврат чего-либо: -)

Очевидно, судья достаточно хорош, чтобы не возражать , чтобы вы что-то возвращали, но он, безусловно, будет игнорировать что бы вы ни вернули. Кроме того, с nums1 = my_new_list_object вы только переназначаете свою локальную переменную на вновь созданный объект списка, вы вообще не изменяете данный объект списка. Поэтому судья даже не может сказать, что вы сделали что-нибудь .

С другой стороны, nums1[:] = ... вы не присваиваете свою локальную переменную, вы присваиваете содержание списка, на который он ссылается. Так что действительно изменяет заданный объект списка как требуется.

...