[問題] Leetcode 88. Merge Sorted Array

作者: xxx30165 (xxx30165)   2016-07-15 10:14:59
這一題給定nums1, nums2兩個list,以及m,n代表這兩個list的長度,
然後題目規定要把兩個用merge的方式存到nums1。
想說先直接sort測試看看,以下是我的程式碼:
class Solution(object):
def merge(self, nums1, m, nums2, n):
"""
:type nums1: List[int]
:type m: int
:type nums2: List[int]
:type n: int
:rtype: void Do not return anything, modify nums1 in-place instead.
"""
nums = nums1 + nums2
nums.sort()
nums1 = nums
但這個程式碼在下面的測資出現問題:
Input: [0], 0, [1], 1
Output: [0]
Expected: [1]
感覺,我的output應該是[0,1]才對,
但我不懂的是為什麼明明nums1有一個[0]的元素,長度卻是0?
後來又在跑自定的測資
Input: [0],1,[1],1
Your Answer: [0]
Expected answer: Line 16: IndexError: list assignement index out of range
我的程式只有寫到13行,是不是他題目有點奇怪啊?
作者: uranusjr (←這人是超級笨蛋)   2016-07-15 10:26:00
nums1 = nums 並不會 modify nums1 in-place
作者: xxx30165 (xxx30165)   2016-07-17 09:23:00
那請問為什麼不是in-place會造成結果錯誤呢?
作者: s860134 (s860134)   2016-07-17 16:19:00
list 物件提供幾個 in-place 方法 append,extend,sort
作者: xxx30165 (xxx30165)   2016-07-17 21:20:00
嗯嗯,但是我還是不太懂不用in-place出錯的原因是什麼?
作者: uranusjr (←這人是超級笨蛋)   2016-07-17 21:26:00
Reassign local scope 裡的變數不會影響 scope 外的值你自己執行一次, 在 merge 執行前、中、後把 nums1 和id(nums1) 印出來 (後者會印出 nums1 是「哪一個」物件)看看就知道了
作者: xxx30165 (xxx30165)   2016-07-17 21:41:00
終於懂了,感謝您!

Links booklink

Contact Us: admin [ a t ] ucptt.com