LeetCode] [2つの規則正しいアレイ(NEW)の順序付けられた配列の合成

例えばNUM1等の規則配列でnums2のnums1に組み込まれた整数とnums2のnums1二順序付けられた配列を、与えられました。

説明:

mおよびnの要素nums1 nums2の数を初期化します。
あなたはnums2の要素を保存するnums1十分なスペース(M + 1 N以上の空間)をとることができます。
例:

入力:
nums1 = [1,2,3,0,0,0]、M = 3。
nums2 = [2,5,6]、N- = 3。

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

 

解決策1:

あなたは、合併前に考慮していない場合は、スペース上の新しい配列は、この問題を解決することができます

解決策2:

合わせた溶液を、2の主題は、空間は確か2 1よりも大きい場合、一つにマージされ、前記しました

考え

1.私たちは、1に挿入されるまで、1に2で2桁を数字を維持する必要があります

2.番号1、注2に挿入され、2つのケースがあり、一つは、二つの配列が常に比較される番号2に直接挿入されるように、一つは、比較のアレイにおける数1完了しているが、1でありますクラスソリューション(オブジェクト)DEF (セルフ、nums1、M、nums2、N-)マージ。

「」「
        :リスト[INT]:タイプnums1の
        :タイプmの:INT 
        :タイプnums2の:リスト[INT] タイプのN:INT 
        :RTYPE :.なしインクルードは何も返さないでください、修正nums1インプレースINSTEAD 
        「」」
     #の場合図2は、直接戻り、空である IF == - N :0 戻りnums1の
マージアレイ#P 1のインデックス代表 P
= M + N-1-
     組み合わせフロントの配列インデックス1#P1が代表 P1 = M-1
     #P2の配列が表しますインデックス2
     #pは、P1、P2は、ポインタとして理解することができる P2
= 1-N-
     限りアレイが完全に組み合わさ連結されていないよう#2 のwhile P2> = 0
        の配列番号は比較例2を終えていない場合は#1
IF P1> = 0: IF nums2 [P2]> nums1 [P1]: nums1 [P] = nums2 [P2] P2 - = 1。 P - = 1。 nums1 [P] = nums1 [P1] P1 - = 1。
P- 1 =

          #1 P1 <0は、数1であれば番号2は、このようなマージ配列に一度に加えように、バック比較して終了した表し nums1 [P]
= nums2 [P2 ] P - 。1 = P2 - = 1 戻り nums1

 

おすすめ

転載: www.cnblogs.com/dreamyu/p/11403293.html