标记中有几个 1 就是代表选取了几个数,然后再去遍历这些 1 所有可能存在的排列方式,最后做一个判断,这个判断就是:每一种排列方式,都代表着数组中不同位置的被选中的数的组合,所以这里就是将选中的这些数字...这里可以这样看:1110 中的左边第一个 1 对应着数组 [1, 2, 3, 4] 中的 1 。
现在有一个问题,该如何建立这个映射关系呢?...例如输入 4,5,1,6,2,7,3,8 这 8 个数字,则最大的 4 个数字是 8,7,6,5,。
比较简单的是将这些数字组合成一个数组,然后进行从大到小进行排序,取前 K 个即可。...之后将第 K + 1 个元素与堆顶对比,如果大于堆顶元素,则说明堆顶元素不是第 K 大的值,因此将堆顶元素替换为第 K + 1 个元素,并调整此最小堆,以此类推至数组的最后一个元素,则最后整个最小堆即为所求答案...,如果大于堆顶元素,则说明堆顶元素不是第 K 大的值,因此将堆顶元素替换为第 i 个元素
if (minHeap[0] < nums[i]) {
minHeap[0] = nums[