この問題は、Microsoftへのインタビューから得たものです。
ランダムな整数の配列が与えられた場合、重複した数値を削除し、元の配列の一意の数値を返すアルゴリズムをCで記述します。
例:入力:{4, 8, 4, 1, 1, 2, 9}
出力:{4, 8, 1, 2, 9, ?, ?}
注意点の1つは、期待されるアルゴリズムでは、配列を最初にソートする必要がないことです。また、要素が削除された場合は、次の要素も前方にシフトする必要があります。とにかく、要素が前方にシフトされた配列の末尾にある要素の値は無視できます。
更新:結果は元の配列で返される必要があり、ヘルパーデータ構造(ハッシュテーブルなど)は使用しないでください。ただし、注文の保存は必要ないと思います。
Update2:なぜこれらの非現実的な制約があるのか疑問に思う人のために、これはインタビューの質問でした。これらの制約はすべて、思考プロセス中に議論され、さまざまなアイデアを思いつく方法を確認します。