Computer >> Máy Tính >  >> Lập trình >> Python

Phần tử lớn nhất thứ K trong một luồng bằng Python

Giả sử chúng ta muốn thiết kế một lớp để tìm phần tử lớn thứ k trong một luồng. Nó là phần tử lớn thứ k trong thứ tự đã sắp xếp, không phải phần tử khác biệt thứ k.

Lớp KthLargest sẽ có một phương thức khởi tạo nhận một số nguyên k và một số mảng, sẽ chứa các phần tử ban đầu từ luồng. Đối với mỗi lệnh gọi phương thức KthLargest.add, sẽ trả về phần tử đại diện cho phần tử lớn thứ k trong luồng.

Vì vậy, nếu đầu vào là k =3, các phần tử ban đầu =[4,5,8,2], thì hãy gọi add (3), add (5), add (10), add (9), add (4) . , thì đầu ra sẽ lần lượt là 4,5,5,8,8.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Xác định trình khởi tạo, Điều này sẽ lấy k, nums
    • mảng:=nums
  • Xác định một hàm add (). Điều này sẽ mất giá trị
    • chèn val vào cuối mảng
    • sắp xếp mảng
    • trả về mảng [kích thước của mảng -k]

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

class KthLargest:
   def __init__(self, k, nums):
      self.array = nums
      self.k = k
   def add(self, val):
      self.array.append(val)
      self.array.sort()
      return self.array[len(self.array)-self.k]
ob = KthLargest(3, [4,5,8,2])
print(ob.add(3))
print(ob.add(5))
print(ob.add(10))
print(ob.add(9))
print(ob.add(4))

Đầu vào

ob.add(3)
ob.add(5)
ob.add(10)
ob.add(9)
ob.add(4)

Đầu ra

4
5
5
8
8