Quay lại danh sách thử thách
Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Loại Bỏ Phần Tử Trùng Lặp

Chỉ giữ lại lần xuất hiện đầu tiên của mỗi giá trị.

Bạn sẽ học được gì

  • Theo dõi giá trị đã gặp bằng tập hợp
  • Giữ lần xuất hiện đầu tiên của mỗi giá trị
  • Giữ nguyên thứ tự ban đầu

Đề bài

Xem bản gốc (English)

Trả về danh sách với các giá trị trùng lặp đã bị loại bỏ, giữ nguyên lần xuất hiện đầu tiên của mỗi giá trị theo thứ tự ban đầu.

Cài đặt hàm remove_duplicates(numbers).

Đầu vào

numbers: Danh sách các số nguyên.

Đầu ra

Trả về danh sách không chứa các giá trị trùng lặp.

Ràng buộc

0 ≤ độ dài ≤ 100.000

Ví dụ

Ví dụ 1
Đầu vào:
numbers = [3, 1, 3, 2, 1]

Kết quả mong đợi:
expected = [3, 1, 2]
Đầu vào:
std::vector<long long> numbers = {3, 1, 3, 2, 1};

Kết quả mong đợi:
std::vector<long long> expected = {3, 1, 2};
Đầu vào:
long[] numbers = new long[] {3, 1, 3, 2, 1};

Kết quả mong đợi:
long[] expected = new long[] {3, 1, 2};

Giải thích

Giữ lại 3, 1, sau đó là 2; các số 3 và 1 xuất hiện sau bị loại bỏ: [3, 1, 2].

Ví dụ 2
Đầu vào:
numbers = [7, 7, 7]

Kết quả mong đợi:
expected = [7]
Đầu vào:
std::vector<long long> numbers = {7, 7, 7};

Kết quả mong đợi:
std::vector<long long> expected = {7};
Đầu vào:
long[] numbers = new long[] {7, 7, 7};

Kết quả mong đợi:
long[] expected = new long[] {7};

Giải thích

Chỉ giữ lại số 7 đầu tiên: [7].

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Giữ lần xuất hiện đầu tiên của mỗi giá trị và bỏ qua các lần lặp sau.

Gợi ý 2

Một set hoặc cấu trúc tra cứu tương tự giúp bạn biết nhanh một giá trị đã thấy chưa.

Gợi ý 3

Giữ nguyên thứ tự xuất hiện đầu tiên, không phải thứ tự đã sắp xếp.

Độ phức tạp mong đợi

thời gian O(n), bộ nhớ phụ O(n)

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.