您的位置:首页 > 其它

LeetCode----Merge Sorted Array

2015-09-06 15:30 288 查看


Merge Sorted Array

 

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

Note:

You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.

分析:

合并两个已经有序的数组,本来是按归并排序中合并子数组的思路来,用Python写的,提交一直不对,后来发现题目要求是排序后nums1被修改了,即在函数运行后,nums1保存修改的结果。想了一下,Python并没有类似C++的引用,以为需要换种语言实现了。但是,查看了Discuss后发现居然有人是用Python提交的,原来我忘了Python中的赋值以及拷贝的东西了,有一篇博客可以好好学习一下。以后有时间还是多看看Dicuss里的东西,里面总有一些实现优雅简短的代码出现。

代码1:

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.
"""
i = j = 0
while i < (m+j) and j < n:
if nums2[j] <= nums1[i]:
nums1.insert(i, nums2[j])
j += 1
i += 1
else:
i += 1
nums1[m+j:] = nums2[j:]
nums1[:] = nums1[: m+n]
print nums1

代码2:

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.
"""
nums1[m:] = nums2[:n]
nums1.sort()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  合并