LeetCode中如何合并兩個有序數(shù)組

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

公司主營業(yè)務:網(wǎng)站設計、成都網(wǎng)站設計、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出平定免費做網(wǎng)站回饋大家。

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

LeetCode中如何合并兩個有序數(shù)組

2

 題解

思路:雙指針
設置兩個指針分別指向兩個數(shù)組的起始位置,依次比較大小,每次將最小值放入輸出數(shù)組中。因為要建立一個數(shù)據(jù)存放結(jié)果或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)  ,可考慮從右至左依次比較,每次將最大值從右邊依次放入輸出數(shù)組中,此時要增加一個指針記錄放入的位置。時間復雜度依舊是為  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]

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

當前題目:LeetCode中如何合并兩個有序數(shù)組
轉(zhuǎn)載源于:http://bm7419.com/article40/gejieo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、品牌網(wǎng)站建設、企業(yè)網(wǎng)站制作、網(wǎng)頁設計公司定制網(wǎng)站、響應式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設