golang 703数据流中的第K大元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 703数据流中的第K大元素相关的知识,希望对你有一定的参考价值。
import "container/heap"
type IntHead []int
func (this IntHead) Len() int { return len(this) }
func (this IntHead) Less(i, j int) bool {
return this[i] < this[j]
}
func (this IntHead) Swap(i, j int) {
this[i], this[j] = this[j], this[i]
}
func (this *IntHead) Push(x interface{}) {
*this = append(*this, x.(int))
}
func (this *IntHead) Pop() interface{} {
old := *this
n := len(old)
x := old[n-1]
*this = old[0 : n-1]
return x
}
type KthLargest struct {
Size int
Data *IntHead
}
func Constructor(k int, nums []int) KthLargest {
min := &IntHead{}
heap.Init(min)
kth := KthLargest{Size: k, Data: min}
for _, num := range nums {
kth.Add(num)
}
return kth
}
func (this *KthLargest) Add(val int) int {
if this.Data.Len() == 1 && (*this.Data)[0] == 0 && val == -1 {
min := &IntHead{-1, 0}
heap.Init(min)
this.Data = min
}
if this.Data.Len() < this.Size {
heap.Push(this.Data, val)
} else if (*this.Data)[0] < val {
heap.Pop(this.Data)
heap.Push(this.Data, val)
}
return (*this.Data)[0]
}
/**
* Your KthLargest object will be instantiated and called as such:
* obj := Constructor(k, nums);
* param_1 := obj.Add(val);
*/
【golang】解决etcd安装出现的问题
参考技术A
解决办法修改依赖版本:
在GOPATH/src下执行
在go mod里加入
以上是关于golang 703数据流中的第K大元素的主要内容,如果未能解决你的问题,请参考以下文章
[JavaScript 刷题] 堆 - 数据流中的第 K 大元素, leetcode 703
⭐算法入门⭐《堆》中等02 —— LeetCode 703. 数据流中的第 K 大元素
Leetcode刷题100天—703. 数据流中的第 K 大元素(优先队列)—day16
Leetcode 703题数据流中的第K大元素(Kth Largest Element in a Stream)Java语言求解
leetcode 简单题
golang 215数组中的第K个最大元素