作者xxx30165 (xxx30165)
看板Python
標題[問題] Leetcode 88. Merge Sorted Array
時間Fri Jul 15 10:14:59 2016
這一題給定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
→ uranusjr: nums1 = nums 並不會 modify nums1 in-place 07/15 10:26
→ xxx30165: 那請問為什麼不是in-place會造成結果錯誤呢? 07/17 09:23
→ s860134: list 物件提供幾個 in-place 方法 append,extend,sort 07/17 16:19
→ xxx30165: 嗯嗯,但是我還是不太懂不用in-place出錯的原因是什麼? 07/17 21:20
→ uranusjr: Reassign local scope 裡的變數不會影響 scope 外的值 07/17 21:26
→ uranusjr: 你自己執行一次, 在 merge 執行前、中、後把 nums1 和 07/17 21:27
→ uranusjr: id(nums1) 印出來 (後者會印出 nums1 是「哪一個」物件) 07/17 21:28
→ uranusjr: 看看就知道了 07/17 21:28
→ xxx30165: 終於懂了,感謝您! 07/17 21:41