cuốn sách gpt4 ai đã làm

algorithm - 排行榜的高效数据结构,即记录列表(名称、积分) - 高效搜索(名称)、搜索(排名)和更新(积分)

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 02:27:55 27 4
mua khóa gpt4 Nike

Vui lòng đề xuất cấu trúc dữ liệu để thể hiệnKý ứcdanh sách các bản ghi trong . Mỗi bản ghi bao gồm các phần sau:

  • 用户名
  • tích phân
  • Xếp hạng (dựa trên điểm) - trường tùy chọn - có thể được lưu trong bản ghi hoặc có thể được tính toán động

Cấu trúc dữ liệu phải hỗ trợ thực hiện hiệu quả các hoạt động sau:

  1. Insert(record) - có thể thay đổi thứ hạng của bản ghi hiện có
  2. Xóa (bản ghi) - có thể thay đổi thứ hạng của bản ghi hiện có
  3. GetRecord(name) - có thể một bảng băm sẽ làm được.
  4. Nhận hồ sơ (xếp hạng)
  5. Cập nhật (điểm) - có thể thay đổi thứ hạng của hồ sơ hiện có

Vấn đề chính của tôi là triển khai hiệu quả GetRecord(rank) vì thứ hạng thay đổi thường xuyên.

Tôi muốn ký ức cơ sở dữ liệu sẽ là một giải pháp tốt, nhưng vui lòng không đề xuất nó; vui lòng đề xuất cấu trúc dữ liệu.

câu trả lời hay nhất

Về cơ bản, bạn chỉ cần một cặp cây tìm kiếm cân bằng, nó sẽ cho phép các thao tác chèn, xóa và getRecord O(lg n). Mẹo nhỏ là thay vì lưu trữ dữ liệu thực tế trong cây, bạn lưu trữ các con trỏ tới một tập hợp các đối tượng bản ghi, trong đó mỗi đối tượng bản ghi sẽ chứa 5 trường:

  1. 用户名
  2. Điểm
  3. Xếp hạng
  4. Con trỏ tới nút trong cây tên tham chiếu đến đối tượng
  5. Một con trỏ tới nút trong cây điểm tham chiếu đến đối tượng.

Cây tên chỉ được sửa đổi khi bản ghi mới được thêm vào và bản ghi bị xóa. Cây điểm được sửa đổi để chèn và xóa, nhưng cũng để cập nhật, trong đó tìm thấy bản ghi thích hợp, con trỏ cây điểm bị xóa, số điểm được cập nhật và một con trỏ mới được thêm vào cây điểm.

Như bạn đã đề cập, bạn có thể sử dụng bảng băm thay vì cây tên nếu muốn. Điều quan trọng ở đây là bạn chỉ cần duy trì một chỉ mục được sắp xếp riêng biệt trên một tập hợp các bản ghi không có thứ tự mà bản thân chúng chứa các con trỏ tới các nút của chúng.


Cây điểm sẽ là cây thống kê thứ tự Một số biến thể của , không phải là cấu trúc dữ liệu cụ thể mà là thuật ngữ chung cho cây tìm kiếm nhị phân có các hoạt động được sửa đổi để duy trì tính bất biến, làm cho các hoạt động liên quan đến xếp hạng được yêu cầu hiệu quả hơn so với việc duyệt cây. Chi tiết về cách duy trì các bất biến phụ thuộc vào cây tìm kiếm cân bằng cơ bản được sử dụng (cây đỏ-đen, cây avl, v.v.).

Về thuật toán - cấu trúc dữ liệu hiệu quả cho danh sách xếp hạng, tức là danh sách các bản ghi (tên, điểm) - tìm kiếm hiệu quả (tên), tìm kiếm (xếp hạng) và cập nhật (điểm), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow : https://stackoverflow.com/questions/25221544/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress