Leecode 88.合併兩個有序數組

題目

在這裏插入圖片描述

解答

暴力解

直接將nums2替換nums1中的零,再然後將nums1使用sort()進行有序排列

class Solution(object):
    def merge(self, nums1, m, nums2, n):
        """
        :type nums1: List[int]
        :type m: int
        :type nums2: List[int]
        :type n: int
        :rtype: None Do not return anything, modify nums1 in-place instead.
        """
        nums1[m:m+n] = nums2
        return nums1.sort()

雙指針方法

創建兩個指針p1,p2分別表示指針所在位置,比較指針所在位置元素大小,用較大指針的元素加入到列表後面,並且指針向前移動一位,另一個指針位置不變當一個指針移動到位置最前並將向前移動時,nums2一個指針及其前面全部順序加入到列表中,指針p表示追蹤元素的位置

class Solution(object):    
    def merge(self, nums1, m, nums2, n):        
        p1=m-1        
        p2=n-1        
        p=m+n-1        
        while p1>=0 and p2>=0:         
           if nums1[p1] <= nums2[p2]:            
              nums1[p]=nums2[p2]                
              p2-=1                
              p -= 1            
           else:             
              nums1[p] = nums1[p1]                
              p1 -= 1                
              p -= 1        
        nums1[:p2 + 1] = nums2[:p2 + 1]

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章