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]