leetcode 703 数据流中第k大元素

var KthLargest = function(k, nums) {
  this.nums = nums
  this.k = k
  this.stack = new Stack()
  for(let i = 0; i < nums.length; i++){
    this.stack.add(nums[i])
    if(this.stack.size() > k){
      this.stack.delete()
    }
  }
};

KthLargest.prototype.add = function(val) {
  this.stack.add(val)
  if(this.stack.size() > this.k){
    this.stack.delete()
  }
  return this.stack.head()
};

class Stack{
  constructor(){
    this.arr = []
  }
  add(n){
    let len = this.arr.length
    for(let i = 0; i < len; i++){
      if(this.arr[i] > n){
        this.arr.splice(i,0,n)
        return
      }
    }
    this.arr.push(n)
  }
  delete(){
    return this.arr.shift()
  }
  size(){
    return this.arr.length
  }
  head(){
    return this.arr[0]
  }
}

 

posted @ 2021-02-18 21:36  张最棒  阅读(88)  评论(1编辑  收藏  举报