python-261Đọc toàn bộ đề miễn phí

Khử trùng lặp nhưng giữ nguyên thứ tự xuất hiện

set xoá trùng lặp trong một nốt nhạc, nhưng nó không hứa gì về thứ tự. Với nhiều bài

PythonCơ bản10 phút

Tiến độ của tôi ở bài này

Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

data-structuressetdeduplicationorder-preservingentry-ramp

Kiến thức tiên quyết: python-basics, python-lists, python-sets.

Nội dung đề bài

Mô tả bài toán

set xoá trùng lặp trong một nốt nhạc, nhưng nó không hứa gì về thứ tự. Với nhiều bài toán thực tế, thứ tự xuất hiện đầu tiên lại chính là thứ tự cần giữ: nhật ký truy cập, danh sách khách hàng theo thời điểm phát sinh, các bước trong một quy trình. Bài này luyện cách dùng set chỉ để tra cứu nhanh, còn thứ tự do danh sách kết quả quyết định.

Yêu cầu

Viết hàm unique_in_order(items) trả về danh sách các giá trị khác nhau của items, mỗi giá trị xuất hiện đúng một lần, theo thứ tự xuất hiện đầu tiên của nó trong đầu vào.

Quy ước nộp bài

Nộp hàm unique_in_order trong solution.py. Hệ thống gọi hàm trực tiếp bằng tên đối số items rồi so giá trị trả về theo đúng thứ tự; không đọc dữ liệu từ stdin và không in ra stdout.

Input

  • items: danh sách các giá trị băm được, ở đây là số nguyên hoặc chuỗi.

Output

Danh sách mới, không sửa items, chứa mỗi giá trị khác nhau đúng một lần theo thứ tự xuất hiện lần đầu.

Ràng buộc

  • Số phần tử từ 0 đến 50; giá trị có thể trùng nhau nhiều lần.
  • Thứ tự kết quả phải theo lần xuất hiện đầu tiên, không theo thứ tự giá trị và không phụ

thuộc vào cách set sắp xếp nội bộ.

  • Không được sửa danh sách đầu vào.
  • Thời gian cần đạt O(n); dùng set để tra cứu "đã gặp hay chưa" trong O(1).

Ví dụ 1

Input

unique_in_order(items=[3, 1, 3, 2, 1])

Output

[3, 1, 2]

Ví dụ 2

Input

unique_in_order(items=[1, 1, 1])

Output

[1]

Giải thích

Với items = [3, 1, 3, 2, 1], giá trị 3 xuất hiện đầu tiên ở vị trí 0, 1 ở vị trí 1, 2 ở vị trí 3, nên hàm trả về [3, 1, 2]. Chú ý 2 không được xếp trước 3 dù nhỏ hơn.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.

Nhóm Zalo