LeetCode88合并两个有序数组

未经博主同意,禁止瞎JB转载。

LeetCode88合并两个有序数组

https://leetcode-cn.com/problems/merge-sorted-array/description/

我的解法:

使用了python里面的insert函数,而且每次插入一个数字都要移动该数字后面所有的数字,比较麻烦,一些细节容易出错。

 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         i = 0
11         j = 0
12         while i < m+n and j < m:
13             while nums2:
14                 if nums1[i]>nums2[0]:
15                     nums1.pop()
16                     nums1.insert(i,nums2[0])
17                     nums2.pop(0)
18                     i = i + 1
19                 else:
20                     break
21             i = i + 1
22             j = j + 1
23         while nums2:
24             nums1.pop()
25             nums1.insert(i,nums2.pop(0))
26             i = i + 1

 别人做得就既简单又暴力,既然前面位置不确定,那么可以从后向前比较啊。。。厉害。

1 while m>0 and n >0:
2             if nums1[m-1] >= nums2[n-1]:
3                 nums1[m+n-1] = nums1[m-1]
4                 m = m -1
5             else :
6                 nums1[m+n-1] = nums2[n-1]
7                 n = n-1
8         if n > 0 :
9             nums1[:n] = nums2[:n]

 

posted @ 2018-10-11 22:14  嬴政有条北冥的鱼  阅读(139)  评论(0编辑  收藏  举报