题解 | #最小的K个数#
最小的K个数
https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf
package main /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param input int整型一维数组 * @param k int整型 * @return int整型一维数组 */ func GetLeastNumbers_Solution(input []int, k int) []int { data := make([]int, k) if k <= 0 { return data } for i := 0; i < k; i++ { data[i] = input[i] } for i := k - 1; i >= 0; i-- { arrange(data, i) } for i := k; i < len(input); i++ { if data[0] > input[i] { data[0] = input[i] arrange(data, 0) } } return data } func arrange(data []int, idx int) { le := len(data) left := idx << 1 right := (idx << 1) + 1 cha := idx if left < le && data[left] > data[cha] { cha = left } if right < le && data[right] > data[cha] { cha = right } if cha != idx { tmp := data[cha] data[cha] = data[idx] data[idx] = tmp arrange(data, cha) } }