簡単 0件解決済み 正答率0%

重複の削除

各値の最初の出現のみを残します。

このチャレンジで学べること

  • 集合で出現済みの値を記録する
  • 各値の最初の出現を残す
  • 元の順序を保つ

問題

原文(英語)を表示

リスト内の重複した値を削除し、各値の最初の出現のみを元の順序で残して返してください。

remove_duplicates(numbers) を実装してください。

入力

numbers: 整数のリスト。

出力

重複を除いたリストを返してください。

制約

0 ≤ 長さ ≤ 100,000

例

例 1
入力:
numbers = [3, 1, 3, 2, 1]

期待される出力:
expected = [3, 1, 2]
入力:
std::vector<long long> numbers = {3, 1, 3, 2, 1};

期待される出力:
std::vector<long long> expected = {3, 1, 2};
入力:
long[] numbers = new long[] {3, 1, 3, 2, 1};

期待される出力:
long[] expected = new long[] {3, 1, 2};

解説

3、1、2を順に残し、後の3と1は削除されます: [3, 1, 2]。

例 2
入力:
numbers = [7, 7, 7]

期待される出力:
expected = [7]
入力:
std::vector<long long> numbers = {7, 7, 7};

期待される出力:
std::vector<long long> expected = {7};
入力:
long[] numbers = new long[] {7, 7, 7};

期待される出力:
long[] expected = new long[] {7};

解説

最初の7のみが残ります: [7]。

解き方のヒント

まずは自分で考えてから、ヒントを 1 つずつ開いてみましょう。

ヒント 1

各値の最初の出現だけ残し、それ以降の重複は無視する。

ヒント 2

setのような検索を使うと、既出かどうかすぐ分かる。

ヒント 3

並び替えではなく、最初に出た順番を保つ。

目安の計算量

時間 O(n)、追加メモリ O(n)

参考資料

この課題はCodeUtility用に調整されています。上記の説明と制約に従ってください。

他の人の解答から学ぶ

コミュニティの解答

まだ公開された解答がありません。この課題を解いて最初の解答を共有しましょう。