高洛峰2017-04-18 09:36:30
私は実際にこの質問をしたわけではありませんが、彼の言いたいことを推測して次のコードを書きました。読んだ後は問題が理解できるはずです。
結果:
リーリーこの質問は Python にはあまり適切ではありません (leetcode の多くのデータ構造の質問にはこの問題があります)。元の質問は配列について話していますが、ここで扱っているのはリストですが、Python のリストは実際には配列に似ています。まだいくつかの違いがあります。
タイトルからもわかるように、nums1
の長さは m+n
から始まります。これは、 m
が m+n
の長さを表しているためかもしれません。 nums1
(スペース) したがって、この例では、意味のない数字を表すために 0 を使用しましたが、スペースの存在を強調しました。
最初のメソッド nums1[m:] = nums2[:n]
は、nums2
の最初の n 要素 (有効な要素) を nums1
のスペースの後半 (m+1
番目の位置から開始) に埋め込み、最後に最終的な答えが私たちが望むものになるようにそれらを並べ替えます。
2 番目のメソッドは、一見すると最初のメソッドと同じように見えますが、この質問で使用される入力データの点では、実際には nums1
の後の残りのスペースを使用しません。 <🎜 を使用します > 内の各要素は (nums2
を使用して) 新しいスペースを追加し、これにより append
の長さ (スペース) が変更されます。 nums1
に割り当てられているにもかかわらず、nums1 + nums2
は新しいオブジェクトを生成します。 , この変数は元の nums1
を参照しなくなり、元の nums1
はまったく影響を受けません。 nums1
私が回答した質問: Python-QA
高洛峰2017-04-18 09:36:30
質問の意味を誤解している可能性があります
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 つのリストをマージすることです。