除夕的题祝大家新年快乐~
LeetCode上数据流中的第 K 大元素,简单难度,写完准备看春晚
创建一个类,然后用prototype
的方式添加add
方法,add
方法主要实现将val插入数据流nums后,返回当前数据流中第 k 大的元素。
会用到数组的排序sort
和插入splice
方法
-
new KthLargest
,会传入需要返回的位置k,以及数据流nums - 对nums进行
sort
排序,从大到小排序 - 使用
KthLargest.add()
方法,添加数据val进入nums,然后取k-1位置的数即可
假设传入k = 3,nums = [4, 5, 8, 2]
new KthLargest
排序后可得数组[8,5,4,2]
,在使用add
方法之后要返回第k大的数,这里排序之后,只需要将add
添加的数插入到数组对应的位置,然后返回[k-1]位置的数即可(k-1是因为数组从0位开始)
var KthLargest = function(k, nums) {
// 对传入的nums排序
this.list = nums.sort((a,b) => b-a)
this.k = k
};
KthLargest.prototype.add = function(val) {
// 保存当前数组长度
let length = this.list.length
// 找到对应位置
for(let i = 0; i < length ;i++){
if(val >= this.list[i]){
length = i
break
}
}
this.list.splice(length,0,val)
return this.list[this.k-1]
};