[解決済み] 配列の中から重複する値を探して返す方法
2022-04-13 16:13:41
質問
arr
は文字列の配列です。
["hello", "world", "stack", "overflow", "hello", "again"]
をチェックする簡単でエレガントな方法は何でしょうか?
arr
が重複している場合、そのうちの1つを返す(どれでもよい)?
例
["A", "B", "C", "B", "A"] # => "A" or "B"
["A", "B", "C"] # => nil
解決方法は?
a = ["A", "B", "C", "B", "A"]
a.detect{ |e| a.count(e) > 1 }
これはあまりエレガントな答えではないのですが、私はこれが大好きです。美しいワンライナー・コードです。巨大なデータセットを処理する必要がない限り、全く問題なく動作します。
より速い解決策をお探しですか?はい、これです
def find_one_using_hash_map(array)
map = {}
dup = nil
array.each do |v|
map[v] = (map[v] || 0 ) + 1
if map[v] > 1
dup = v
break
end
end
return dup
end
線形でO(n)ですが、複数のコード行を管理する必要があり、テストケースが必要など。
さらに高速なソリューションが必要な場合は、代わりにC言語を試してみるといいかもしれません。
そして、異なるソリューションを比較する要点は以下の通りです。 https://gist.github.com/naveed-ahmad/8f0b926ffccf5fbd206a1cc58ce9743e
関連
-
[解決済み】macOSでrbenvをアンインストールする方法とは?
-
[解決済み] Rubyでファイルをあるディレクトリから別のディレクトリにコピーする
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] Javaで配列に特定の値が含まれているかどうかを判断するにはどうすればよいですか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] 配列を値でコピーする
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】配列に何かを追加する方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ActionController::UnknownFormat
-
[解決済み] Rubyの除算はなぜ10進数ではなく整数を返すのですか?
-
[解決済み] nil:NilClass のための未定義のメソッド `+' (NoMethodError)
-
[解決済み] Ruby - 文字列を日付に変換する
-
[解決済み] 配列をアルファベット順に並べるには?
-
[解決済み] レイルズ・ジェネレート」を逆手に取る方法
-
[解決済み] string literal in condition "とはどういう意味ですか?
-
[解決済み] マトリックスサムネーションチャレンジ
-
[解決済み] Rubyでガウス(正規分布)乱数を生成するコード
-
[解決済み] JanusのセットアップにVIMプラグインを追加する