Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Kth องค์ประกอบที่ใหญ่ที่สุดในสตรีมใน Python


สมมติว่าเราต้องการออกแบบคลาสเพื่อค้นหาองค์ประกอบที่ใหญ่ที่สุดลำดับที่ k ในสตรีม เป็นองค์ประกอบที่ใหญ่ที่สุดลำดับที่ k ในลำดับการจัดเรียง ไม่ใช่องค์ประกอบเฉพาะที่ k

คลาส KthLargest จะมีคอนสตรัคเตอร์ที่ยอมรับจำนวนเต็ม k และจำนวนอาร์เรย์ ซึ่งจะมีองค์ประกอบเริ่มต้นจากสตรีม สำหรับการเรียกใช้เมธอด KthLargest.add แต่ละครั้ง จะส่งคืนองค์ประกอบที่แสดงถึงองค์ประกอบที่ใหญ่ที่สุดลำดับที่ k ในสตรีม

ดังนั้น หากอินพุตเป็น k =3 องค์ประกอบเริ่มต้น =[4,5,8,2] ให้เรียก add(3), add(5), add(10), add(9), add(4) . แล้วผลลัพธ์จะเป็น 4,5,5,8,8 ตามลำดับ

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดตัวเริ่มต้น ซึ่งจะใช้เวลา k, nums
    • array :=nums
  • กำหนดฟังก์ชัน add() นี่จะใช้เวลา val
    • แทรก val ที่ส่วนท้ายของอาร์เรย์
    • จัดเรียงอาร์เรย์
    • ส่งคืนอาร์เรย์[ขนาดของอาร์เรย์ -k]

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

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))

อินพุต

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

ผลลัพธ์

4
5
5
8
8