中継コード統合送信アレイ
10113 ワード
私の第1ラウンド
var merge = function(nums1, m, nums2, n) {
let p1 = 0;
let p2 = 0;
let count = 0;
while (p2 < n) {
if (nums2[p2] >= nums1[p1] && nums2[p2] <= nums1[p1+1]) {
nums1.splice(p1+1, 0, nums2[p2]);
nums1.pop();
p2++;
count++;
}
p1++;
if (p1 === count+m) break;
}
let count2 = count;
for (let i = p1; i < p1+n-count2; i++) {
nums1[i] = nums2[count];
count++;
}
};
この解答[0]、0,[1]、1が一緒にビットインすると、処理できません.いくつかの反例を加えて,アルゴリズム自体に多くの脆弱性があることが分かった.別の方法で解くのが正しいようです.私の2回目の答え
var merge = function(nums1, m, nums2, n) {
let p1 = 0;
let p2 = 0;
let count = 0;
if (m === 0) {
for (let i = 0; i < n; i++) {
nums1.splice(i,1,nums2[i]);
}
} else {
while (p2 < n) {
if (nums2[p2] <= nums1[p1]) {
nums1.splice(p1, 0, nums2[p2]);
nums1.pop();
p2++;
count++;
}
p1++;
if (p1 === count+m) break;
}
let count2 = count;
for (let i = p1; i < p1+n-count2; i++) {
nums1[i] = nums2[count];
count++;
}
}
};
whileはゲート直下のifクエリー条件を緩和し,mが0の場合に異常処理を行い,完了した.他人の解答
nums 2をnums 1の後ろに貼ってsortを行います.問題はnums 1を返す方法では解けないので、解けなかったので、そうする必要はないようです.
Reference
この問題について(中継コード統合送信アレイ), 我々は、より多くの情報をここで見つけました https://velog.io/@htogether7/리트코드-Merge-Sorted-Arrayテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol