1. 程式人生 > >LeetCode88合並兩個有序數組

LeetCode88合並兩個有序數組

ble strong col break bre return 細節 -a problem

未經博主同意,禁止瞎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]

LeetCode88合並兩個有序數組