🐞 fix:
If k is greater than the array itself, directly return itself
This commit is contained in:
parent
a7c241609f
commit
974a75f1a0
@ -98,4 +98,9 @@ func TestTopKHeap(t *testing.T) {
|
|||||||
res := topKHeap(nums, k)
|
res := topKHeap(nums, k)
|
||||||
fmt.Printf("最大的 " + strconv.Itoa(k) + " 个元素为")
|
fmt.Printf("最大的 " + strconv.Itoa(k) + " 个元素为")
|
||||||
PrintHeap(*res)
|
PrintHeap(*res)
|
||||||
|
|
||||||
|
k = 10
|
||||||
|
res = topKHeap(nums, k)
|
||||||
|
fmt.Printf("最大的 " + strconv.Itoa(k) + " 个元素为")
|
||||||
|
PrintHeap(*res)
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,16 @@ func topKHeap(nums []int, k int) *minHeap {
|
|||||||
// 初始化小顶堆
|
// 初始化小顶堆
|
||||||
h := &minHeap{}
|
h := &minHeap{}
|
||||||
heap.Init(h)
|
heap.Init(h)
|
||||||
|
|
||||||
|
// 如果k大于数组本身返回本身数组
|
||||||
|
if len(nums) < k {
|
||||||
|
for _, num := range nums {
|
||||||
|
heap.Push(h, num)
|
||||||
|
}
|
||||||
|
|
||||||
|
return h
|
||||||
|
}
|
||||||
|
|
||||||
// 将数组的前 k 个元素入堆
|
// 将数组的前 k 个元素入堆
|
||||||
for i := 0; i < k; i++ {
|
for i := 0; i < k; i++ {
|
||||||
heap.Push(h, nums[i])
|
heap.Push(h, nums[i])
|
||||||
|
Loading…
Reference in New Issue
Block a user