😎풀이

  1. nums: 입력받은 숫자 배열을 오름차 순 정렬
  2. k: k번째 수 저장
  3. add: 호출
    3-1. 이진 탐색을 통해 적절한 val의 위치 탐색
    3-2. numsval을 반영한 후 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)
    }
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글