
😎풀이
nums
: 입력받은 숫자 배열을 오름차 순 정렬
k
: k
번째 수 저장
add
: 호출
3-1. 이진 탐색을 통해 적절한 val
의 위치 탐색
3-2. nums
에 val
을 반영한 후 k
번째 요소 반환
class KthLargest {
private nums: number[]
private k: number
constructor(k: number, nums: number[]) {
this.nums = nums.toSorted((a, b) => a - b)
this.k = k
}
add(val: number): number {
let left = 0
let right = this.nums.length - 1
while(left <= right) {
const mid = Math.floor((left + right) / 2)
const midVal = this.nums[mid]
if(val >= midVal) {
left = mid + 1
} else if(val < midVal) {
right = mid - 1
}
}
this.nums.splice(left, 0, val)
return this.nums.at(-this.k)
}
}