/** * 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) }