python - 88. Merge Sorted Array
天蓬老师
天蓬老师 2017-04-18 09:34:30
0
2
881
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全員に返信(2)
小葫芦

私は実際にこの質問をしたわけではありませんが、彼の言いたいことを推測して次のコードを書きました。読んだ後は問題が理解できるはずです。

簡単なテスト

リーリー

結果:

リーリー

説明

この質問は Python にはあまり適切ではありません (leetcode の多くのデータ構造の質問にはこの問題があります)。元の質問は配列について話していますが、ここで扱っているのはリストですが、Python のリストは実際には配列に似ています。まだいくつかの違いがあります。

タイトルからもわかるように、nums1の長さは m+n から始まります。これは、 mm+n の長さを表しているためかもしれません。 nums1 (スペース) したがって、この例では、意味のない数字を表すために 0 を使用しましたが、スペースの存在を強調しました。

マージ1

最初のメソッド nums1[m:] = nums2[:n] は、nums2 の最初の n 要素 (有効な要素) を nums1 のスペースの後半 (m+1 番目の位置から開始) に埋め込み、最後に最終的な答えが私たちが望むものになるようにそれらを並べ替えます。

マージ2

2 番目のメソッドは、一見すると最初のメソッドと同じように見えますが、この質問で使用される入力データの点では、実際には nums1 の後の残りのスペースを使用しません。 内の各要素は (nums2 を使用して) 新しいスペースを追加し、これにより append の長さ (スペース) が変更されます。 nums1

マージ3

このアプローチの問題は 2 番目のアプローチと同じですが、より深刻なことに、この変更は最終的にはまだ

に割り当てられているにもかかわらず、nums1 + nums2 は新しいオブジェクトを生成します。 , この変数は元の nums1 を参照しなくなり、元の nums1 はまったく影響を受けません。 nums1

質問を正しく理解し、疑問を解決できることを願っています!


私が回答した質問: Python-QA

いいねを押す +0
小葫芦

質問の意味を誤解している可能性があります

You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2.

このプロンプトは len(nums1) >= m + n を意味します。具体的には、nums1 の最初の m 項目と nums2 の最後の n 項目を新しい配列 (リスト) にマージし、それを並べ替える必要があります (nums1 の要素数 )m + n

つまり、あなたの解決策は確かに間違っています

追伸: 私の英語が下手なのか、それとも最初にこの質問をした外国人なのかわかりませんが、標準的な回答の意図は、1 つのリストの最初の m 項目と最後の n 項目をマージすることです。別のリストを新しいリストに追加して並べ替えますが、質問の意味は明らかに 2 つのリストをマージすることです。
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート