스트림에서 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