Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 스트림에서 K번째로 큰 요소

<시간/>

스트림에서 k번째로 큰 요소를 찾는 클래스를 설계한다고 가정합니다. k번째 고유한 요소가 아니라 정렬된 순서에서 k번째로 큰 요소입니다.

KthLargest 클래스에는 스트림의 초기 요소를 포함하는 정수 k와 배열 nums를 허용하는 생성자가 있습니다. 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가 필요합니다.
    • 배열 :=숫자
  • 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