[問題] Leetcode 88. Merge Sorted Array

看板Python作者 (xxx30165)時間9年前 (2016/07/15 10:15), 編輯推噓0(009)
留言9則, 3人參與, 最新討論串1/1
這一題給定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行,是不是他題目有點奇怪啊? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.214.132 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1468548902.A.FB0.html

07/15 10:26, , 1F
nums1 = nums 並不會 modify nums1 in-place
07/15 10:26, 1F

07/17 09:23, , 2F
那請問為什麼不是in-place會造成結果錯誤呢?
07/17 09:23, 2F

07/17 16:19, , 3F
list 物件提供幾個 in-place 方法 append,extend,sort
07/17 16:19, 3F

07/17 21:20, , 4F
嗯嗯,但是我還是不太懂不用in-place出錯的原因是什麼?
07/17 21:20, 4F

07/17 21:26, , 5F
Reassign local scope 裡的變數不會影響 scope 外的值
07/17 21:26, 5F

07/17 21:27, , 6F
你自己執行一次, 在 merge 執行前、中、後把 nums1 和
07/17 21:27, 6F

07/17 21:28, , 7F
id(nums1) 印出來 (後者會印出 nums1 是「哪一個」物件)
07/17 21:28, 7F

07/17 21:28, , 8F
看看就知道了
07/17 21:28, 8F

07/17 21:41, , 9F
終於懂了,感謝您!
07/17 21:41, 9F
文章代碼(AID): #1NY4Sc-m (Python)
文章代碼(AID): #1NY4Sc-m (Python)