/** * File: top_k.kt * Created Time: 2024-01-25 * Author: curtishd (1023632660@qq.com) */ package chapter_heap import utils.printHeap import java.util.* /* 基于堆查找数组中最大的 k 个元素 */ fun topKHeap(nums: IntArray, k: Int): Queue { // 初始化小顶堆 val heap = PriorityQueue() // 将数组的前 k 个元素入堆 for (i in 0.. heap.peek()) { heap.poll() heap.offer(nums[i]) } } return heap } /* Driver Code */ fun main() { val nums = intArrayOf(1, 7, 6, 3, 2) val k = 3 val res = topKHeap(nums, k) println("最大的 $k 个元素为") printHeap(res) }