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

  思路:

    这个题我弄了很久,最开始我是重头开始比较然后插入sum1对应的索引里面,但是在测试的时候nums的后面有时跟了一个0,我没搞懂他的用处,然后调了一会没弄出来,我就看了别人的方法,是从尾开始比较,将大的数存入nums1的扩展空间内,最后再将nums2的剩余量全部变到Nums1中

  代码:

 1 class Solution(object):
 2     def merge(self, nums1, m, nums2, n):
 3         """
 4         :type nums1: List[int]
 5         :type m: int
 6         :type nums2: List[int]
 7         :type n: int
 8         :rtype: void Do not return anything, modify nums1 in-place instead.
 9         """
10         p = m + n - 1
11         a = m - 1
12         b = n - 1
13         
14         while a >= 0 and b >= 0:
15             if nums1[a] >= nums2[b]:
16                 nums1[p] = nums1[a]
17                 a -= 1
18             else:
19                 nums1[p] = nums2[b]
20                 b -= 1
21             p -= 1
22         while b >= 0:
23             nums1[p] = nums2[b]
24             p -= 1
25             b -= 1

    大神代码:(其实思路差不多,只是比较简洁)

 1 def merge(self, nums1, m, nums2, n):
 2         while m > 0 and n > 0:
 3             if nums1[m-1] >= nums2[n-1]:
 4                 nums1[m+n-1] = nums1[m-1]
 5                 m -= 1
 6             else:
 7                 nums1[m+n-1] = nums2[n-1]
 8                 n -= 1
 9         if n > 0:
10             nums1[:n] = nums2[:n]

 

posted @ 2017-09-19 17:09  唐僧洗发爱飘柔  阅读(140)  评论(0)    收藏  举报