代码拉取完成,页面将自动刷新
package main
import (
"fmt"
"sort"
)
// 切片本来就是引用类型
type KthLargest struct {
k int
nums []int
}
func Constructor(k int, nums []int) KthLargest {
sort.Slice(nums, func(i, j int) bool {
return nums[i] > nums[j]
})
return KthLargest{
k: k,
nums: nums,
}
}
// 找第k大,也相当于找第len-k+1小 // TODO 也可以从构造那入手,直接改变k值即可
func (this *KthLargest) Add(val int) int {
if len(this.nums) - this.k + 1 < this.k {
return this.BigAdd(val)
}
return this.SmallAdd(val)
}
func (this *KthLargest) BigAdd(val int) int {
if len(this.nums) < this.k || val >= this.nums[this.k - 1] {
this.nums = append(this.nums , val)
sort.Slice(this.nums, func(i, j int) bool {
return this.nums[i] > this.nums[j]
})
}
return this.nums[this.k-1]
}
func (this *KthLargest) SmallAdd(val int) int {
if len(this.nums) < this.k || val >= this.nums[this.k - 1] {
this.nums = append(this.nums , val)
sort.Slice(this.nums, func(i, j int) bool {
return this.nums[i] > this.nums[j]
})
}
return this.nums[this.k-1]
}
func main() {
obj := Constructor(3,[]int{4,5,8,2})
p1 := obj.Add(3)
p2 := obj.Add(5)
p3 := obj.Add(10)
p4 := obj.Add(9)
p5 := obj.Add(4)
fmt.Println(p1,p2,p3,p4,p5)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。