面試題 10 01 合併排序的陣列

2021-10-03 10:57:31 字數 673 閱讀 5687

給定兩個排序後的陣列 a 和 b,其中 a 的末端有足夠的緩衝空間容納 b。 編寫乙個方法,將 b 合併入 a 並排序。

初始化 a 和 b 的元素數量分別為 m 和 n。

示例:輸入:

a = [1,2,3,0,0,0], m = 3

b = [2,5,6], n = 3

輸出: [1,2,2,3,5,6]

直接把b陣列放在a陣列的緩衝空間,然後再使用sort排序

class

solution

sort

(a.begin()

,a.end()

);}}

;

使用兩個指標,乙個過渡陣列。

方法1沒有利用陣列 a 與 b 已經被排序的性質。為了利用這一性質,我們可以使用雙指標方法。這一方法將兩個陣列看作佇列,每次從兩個陣列頭部取出比較小的數字放到過渡陣列中,最後放回a陣列中。

class

solution

for(

int i =

0; i != m + n;

++i)

a[i]

= sorted[i];}

};1001

-he-bing-pai-xu-de-shu-zu-by-leetc/

陣列 面試題 10 01 合併排序的陣列

夢想進大廠的乙隻程式猿 期望畢業前力扣刷夠400題 正在複習資料結構和演算法 第乙個方法,借用o m 的空間,將a陣列的數字轉移到新開闢的空間中,然後依次的比較,方放入a陣列中 第二個方法,我們可以想想可以不借用空間的方法來解決這個問題,我們可以看到,兩個陣列的數字都是排序 公升序 好的,我們可以從...

面試題 排序鍊錶的合併

舉例 兩個鍊錶的情況可能有以下幾種,一是其中乙個鍊錶為空,二是兩個鍊錶都為空,三是兩個鍊錶都不為空。如果是兩個鍊錶都為空的話,那直接就將返回。下面針對存在不空鍊錶的情況做出分析。1,如果是其中乙個鍊錶為空的話,直接返回另一鍊錶的頭結點就行了。2,如果是兩個鍊錶都不為空的話,這個情況就比前兩種情況複雜...

合併排序的陣列

給定兩個排序後的陣列 a 和 b,其中 a 的末端有足夠的緩衝空間容納 b。編寫乙個方法,將 b 合併入 a 並排序。初始化 a 和 b 的元素數量分別為 m 和 n。class solution def merge self,a list int m int,b list int n int no...