[问题] 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