91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

炎陵县| 叶城县| 凯里市| 确山县| 平陆县| 尉犁县| 西乌| 喀喇沁旗| 前郭尔| 民权县| 彭泽县| 河西区| 沾化县| 和田市| 嘉兴市| 精河县| 东辽县| 普安县| 北京市| 靖州| 通辽市| 德江县| 台东市| 宁阳县| 定边县| 和静县| 工布江达县| 长顺县| 雅安市| 双峰县| 襄城县| 宜春市| 新巴尔虎右旗| 望城县| 嘉荫县| 前郭尔| 浦北县| 霍州市| 江油市| 黑龙江省| 鲁甸县|