当時勉強していた問題は、配列からの重複の削除に関する問題でした。
問題の幹 https://leetcode.com/problems...
勉強中に受け入れました。と思ったのですが、ふと疑問が浮かんだのですが、どうすればいいでしょうか? 新しい配列を開かずに、元の配列を重複排除して、変更した配列を返すにはどうすればよいでしょうか? ?
以下は私が渡したコードです
最初は最後に nums.length を返そうと思ったのですが、よく考えたら冗談ではなく、こう書いたら元の nums をそのまま返さなければいけないことに気づき、こうしました。この変更された数値を返す方法を考えます。配列を読んだ後、配列の重複排除に関する多くの記事を読んでも答えが見つかりません。アドバイスをお願いします。 ! ! !
阿神2017-06-12 09:30:19
その場で重複を削除するというアイデアは非常に簡単です
配列の各要素をキーとしてハッシュオブジェクトを作成します
各要素は配列内にすでに存在するかどうかハッシュによって判断されます
存在する場合は、要素を削除します
走査が完了したら、配列要素を移動してギャップを埋めます
配列要素の移動は高コストの操作であるため (たとえば、N 個の長さの配列は N/2 個の空によって均等に掘り出されるため、要素を後ろから前に移動する時間計算量は N^2 のレベルに達する可能性があります) 、そしてこのアルゴリズムは現在の不変の傾向に準拠していないため、このアプローチはありがたいものであり、一般的なシナリオでは実行する必要はありません。
怪我咯2017-06-12 09:30:19
この質問は、配列の単純な重複排除ではありません。この配列は並べ替えられており、順序が乱れている配列の重複排除とは異なります。
順序付けされた配列の重複排除では、同じ要素が一緒に分散されるため、重複排除を実行するには、トラバーサル プロセス中に次の要素が前の要素と同じかどうかを判断するだけで済みます。
この質問は当時の私のエアコンでした
リーリー