問題
リスト内の重複した値を削除し、各値の最初の出現のみを元の順序で残して返してください。
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用に調整されています。上記の説明と制約に従ってください。