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