領釦--合併兩個有序陣列--Python實現
阿新 • • 發佈:2019-01-10
給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為一個有序陣列。 說明: 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。 你可以假設 nums1 有足夠的空間(空間大小大於或等於 m + n)來儲存 nums2 中的元素。 示例: 輸入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 輸出: [1,2,2,3,5,6]
''' 給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為一個有序陣列。 說明: 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。 你可以假設 nums1 有足夠的空間(空間大小大於或等於 m + n)來儲存 nums2 中的元素。 示例: 輸入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 輸出: [1,2,2,3,5,6] ''' class Solution: 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. """ # for x in nums2: # i = m - 1 # while i > -1: # if nums1[i] > x: # nums1[i + 1] = nums1[i] # i -= 1 # else: # nums1[i + 1] = x # break # if i == -1: # nums1[0] = x # m += 1 i = m - 1 #i=2 j = n - 1 #j=2 while j >= 0: while i >= 0 and nums1[i] > nums2[j]: nums1[i + j + 1] = nums1[i] #把大的數放到nums1的最後一位,倒著放入 i -= 1 nums1[i + j + 1] = nums2[j] j -= 1 return nums1 object=Solution() nums1=[1,2,3,0,0,0] m=3 nums2=[2,5,6,0] n=3 result=object.merge(nums1,m,nums2,n) print(result)
GitHub原始碼: