[解決済み] アルゴリズム:配列から重複する整数を削除する効率的な方法
2023-02-22 19:15:53
質問
この問題は、マイクロソフトのインタビューから得たものです。
ランダムな整数の配列が与えられる。 C言語でアルゴリズムを書きなさい。 重複した数字を取り除き、元の配列の一意な数字を返すアルゴリズムを を返すアルゴリズムをCで書きなさい。
例 入力
{4, 8, 4, 1, 1, 2, 9}
出力
{4, 8, 1, 2, 9, ?, ?}
1つの注意点は、期待されるアルゴリズムは配列を最初にソートすることを要求してはいけないということです。また、ある要素が削除された場合、後続の要素も同様に前方にシフトされなければなりません。いずれにせよ、要素が前方にシフトされた配列の末尾にある要素の値は無視できます。
更新しました。 結果は元の配列で返さなければならず、ヘルパーデータ構造(例えばハッシュテーブル)は使ってはいけない。ただし、順序の保持は必要ないかと思います。
更新2です。 なぜこのような非現実的な制約があるのかと思われるかもしれませんが、これはインタビューでの質問で、これらの制約はすべて、私がどのように違うアイデアを思いつくか、考える過程で議論されるものなのです。
どのように解決するのか?
どうでしょう。
void rmdup(int *array, int length)
{
int *current , *end = array + length - 1;
for ( current = array + 1; array < end; array++, current = array + 1 )
{
while ( current <= end )
{
if ( *current == *array )
{
*current = *end--;
}
else
{
current++;
}
}
}
}
O(n^2)以下であることが望ましい。
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] JavaScriptの配列で一意な値をすべて取得する(重複を排除する)。
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
-
[解決済み] Javascriptで配列から空の要素を削除する
-
[解決済み] 重複した行を削除するにはどうすればよいですか?
-
[解決済み] 整数の配列を正しくソートする方法
-
[解決済み] なぜalloca()の使用はグッドプラクティスとみなされないのでしょうか?
-
[解決済み] C言語の構造体(CGRectやCGPointなど)をNSLog化することは可能ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
C 構造体定義エラー: '['トークンの前に一次式があることが予想される
-
#137: 式は変更可能なlvalueでなければならない問題 // 文字列配列の代入問題
-
警告:代入がキャストなしで整数からポインタを作成する場合の修正方法に関する警告
-
C/C++の再定義
-
[解決済み] Valgrind が初期化されていないバイトについて警告する
-
[解決済み] Linuxカーネルにおけるcontainer_ofマクロの理解
-
[解決済み] "static const" vs "#define" vs "enum"
-
[解決済み] C - Setデータ構造を実装するには?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] ++iとi++の違いは何ですか?