タイトル
付随2つの規則正しいアレイは】
2つのソート整数配列nums1とnums2考える 1つのソートされた配列としてnums1に、マージnums2を。
注意:
nums1とnums2で初期化要素の数は、それぞれMであり、N。
あなたはnums1がnums2から追加の要素を保持するのに十分なスペース(大きいまたはM + Nに等しい大きさ)を有していると仮定してもよいです。
例:
入力:
nums1 = [1,2,3,0,0,0]、M = 3
nums2 = [2,5,6]、N = 3
出力:[1,2,2,3,5,6]
思考
バックフロントは、それが前方に戻ってからのものであってもよい移動のステップを省略するために、可動要素に関連する場合、後者は空NUM1、元のデジタル不在を上書きであるため、デジタルnums2のnums1に挿入され、実装します質問。
コード
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int i = m-1, j = n-1, k = m+n-1;
while(i >= 0 && j >= 0){
if(nums1[i] >nums2[j])
nums1[k--] = nums1[i--];
else
nums1[k--] = nums2[j--];
}
//处理nums2剩下的元素
while(j >= 0) {
nums1[k--] = nums2[j--];
}
}
}
結果を発表
ランタイム:0ミリ秒、マージソート配列のためのJavaのオンライン提出のより速い100.00パーセント。
メモリ使用率:37.4メガバイト、マージソート配列のためのJavaのオンライン提出未満の42.33パーセント。