例えば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