赞
踩
给定整数数组 nums
和整数 k
,请返回数组中第 k
个最大的元素。
请注意,你需要找的是数组排序后的第 k
个最大的元素,而不是第 k
个不同的元素。
1 <= k <= nums.length <= 104
-104 <= nums[i] <= 104
本算法题目有两种比较好的方法,分别为使用小顶堆
和使用快速选择
。
首先我们使用小顶堆
的方法求解,先贴代码(Go语言):
type IntHeap []int func (h IntHeap) Len() int { return len(h) } func (h IntHeap) Less(i, j int) bool { return h[i] < h[j] } func (h IntHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] } func (h IntHeap) Top() int { return h[0] } func (h *IntHeap) Push(x interface{ }) {
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。