亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

LeetCode中如何合并兩個有序數組

發布時間:2021-08-12 15:34:47 來源:億速云 閱讀:165 作者:Leah 欄目:大數據

LeetCode中如何合并兩個有序數組,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

給定兩個有序整數數組 nums1 和 nums2,將nums2合并到nums1中,使nums1成為一個有序數組。如:

LeetCode中如何合并兩個有序數組

2

 題解

思路:雙指針
設置兩個指針分別指向兩個數組的起始位置,依次比較大小,每次將最小值放入輸出數組中。因為要建立一個數據存放結果或nums1,所以空間復雜度最小為O(m),時間復雜度則為O(m+n)。  
class Solution:       def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:        """        Do not return anything, modify nums1 in-place instead.        """        i = 0        j = 0        nums3 = nums1[0:m]        nums1[:] = []        while i<m and j<n:            if nums3[i]<=nums2[j]:                nums1.append(nums3[i])                i += 1            else :                nums1.append(nums2[j])                j += 1        if i<m:            nums1[i+j:]=nums3[i:]        if j<n:            nums1[i+j:]=nums2[j:]
進一步將空間復雜度從  O(m  )縮減至O(1)  ,可考慮從右至左依次比較,每次將最大值從右邊依次放入輸出數組中,此時要增加一個指針記錄放入的位置。時間復雜度依舊是為  O(m+n  )。  
class Solution:    def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:        """        Do not return anything, modify nums1 in-place instead.        """        i = m-1        j = n-1        z = m+n-1        while i>=0 and j>=0:            if nums1[i]<=nums2[j]:                nums1[z]=nums2[j]                j -= 1            else :                nums1[z]=nums1[i]                i -= 1            z -= 1        if j >= 0:            nums1[:j+1]=nums2[:j+1]

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

和政县| 南澳县| 富民县| 吉林市| 广饶县| 龙川县| 乳山市| 南岸区| 锡林浩特市| 秭归县| 宁河县| 肇东市| 蒙自县| 靖安县| 台南县| 红安县| 湛江市| 偏关县| 麟游县| 镶黄旗| 龙南县| 阳山县| 皮山县| 桑植县| 铁力市| 叙永县| 郸城县| 广元市| 阳信县| 广德县| 茌平县| 杭州市| 东丽区| 巴塘县| 扶沟县| 尚志市| 淅川县| 肃北| 托克托县| 调兵山市| 石狮市|