题解 | #最小的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 {
    arr := input
	if k == 0 || len(arr) == 0 {
		return []int{}
	}
	quickSort(arr, 0, len(arr)-1)
	res := make([]int, 0)
	for i := 0; i < k; i++ {
		res = append(res, arr[i])
	}
	return res
}

// 从小到大
func quickSort(arr []int, left, right int) {
	if left >= right {
		return
	}
	pivot := getPivot(arr, left, right)
	quickSort(arr, left, pivot-1)
	quickSort(arr, pivot+1, right)
}

func getPivot(arr []int, left, right int) int {
	base := left
	for left < right {
		//从右边开始遍历
		for left < right && arr[right] >= arr[base] {
			right--
		}
		//从左边遍历
		for left < right && arr[left] <= arr[base] {
			left++
		}
		//交换
		arr[left], arr[right] = arr[right], arr[left]
	}
	//交换base、left
	arr[base], arr[left] = arr[left], arr[base]
	return left
}

全部评论

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务