Menu
CoddyTech

Kth Largest Element in a Stream

DễHeappython iconjava iconcpp iconc iconjs icon+10

Một luồng số nguyên bắt đầu bằng các giá trị trong nums. Sau đó, các giá trị trong adds lần lượt xuất hiện. Sau mỗi lần xuất hiện, ghi lại giá trị lớn thứ k trong tất cả các giá trị đã thấy, tính riêng các giá trị bằng nhau. Trả về các giá trị đã ghi theo thứ tự, mỗi giá trị tương ứng với một giá trị trong adds.

nums chứa ít nhất k-1 giá trị, vì vậy sau lần xuất hiện đầu tiên, luôn có ít nhất k giá trị để chọn.

Hàm

kthLargestStream(k: integer, nums: integer-array, adds: integer-array) → integer-array
kinteger
thứ hạng cần báo cáo, 1 là giá trị lớn nhất
numsinteger-array
các giá trị đã có trong luồng
addsinteger-array
các giá trị được đưa vào theo thứ tự
Trả vềinteger-array
giá trị lớn thứ k sau mỗi lần xuất hiện

Ràng buộc

  • 1 ≤ nums.length ≤ 104
  • 1 ≤ adds.length ≤ 104
  • 1 ≤ k ≤ nums.length + 1
  • -104 ≤ nums[i], adds[i] ≤ 104
  • nums có thể theo bất kỳ thứ tự nào, và các giá trị (value) bằng nhau vẫn được tính riêng.

Ví dụ

Đầu vào
k = 3nums = [7, 1, 5]adds = [3, 9, 6, 2, 8]
Đầu ra
[3, 5, 6, 6, 7]
Giải thích
Sau 3, số lớn thứ ba trong các số 7, 5, 3 và 1 là 3. Tiếp theo, 9 nâng số này lên 5, 6 nâng lên 6, 2 không làm thay đổi gì, và 8 nâng lên 7 (9, 8, 7).
challenge icon

Câu hỏi mở rộng

Nếu có thể xóa các giá trị khỏi luồng dữ liệu, bạn sẽ trả lời câu hỏi tương tự như thế nào?

Đặt lại code
def kthLargestStream(k, nums, adds):
    # Viết code tại đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

k = 3
nums = [7, 1, 5]
adds = [3, 9, 6, 2, 8]

Đầu ra mong đợi

[3, 5, 6, 6, 7]