golang 215数组中的第K个最大元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 215数组中的第K个最大元素相关的知识,希望对你有一定的参考价值。
package main
import (
"fmt"
)
func main() {
nums := []int{3, 2, 3, 1, 2, 4, 5, 5, 6}
fmt.Println(findKthLargest(nums, 3))
}
/*
*@ 日期 2019-03-25
*@ 作者 majianyu
*@ 功能 利用快排思想,查找数组中第 K 大元素,时间复杂度 O(n)
*/
func findKthLargest(nums []int, k int) int {
// left
left := make([]int, 0)
// right
right := make([]int, 0)
for {
pivot := nums[len(nums)-1] // 取最后一个值作为 pivot
for _, v := range nums {
// 遍历,比 pivot 大的进入 left, 比 pivot 小的进入 right
if v > pivot {
left = append(left, v)
} else if v < pivot {
right = append(right, v)
}
}
if len(left) == k-1 {
// 如果 left 长度为 k-1 pivot 就是 kmax
return pivot
} else if len(left) >= k-1 {
// 如果 left 长度大于 k -1 ,目标在 left 中,迭代
nums = left
} else {
// 如果 left 长度小于 k -1 ,目标在 right 中,迭代,并且 k-= len(left),移除掉已有的大值数量
nums = append([]int{pivot}, right...)
k -= len(left)
}
left = make([]int, 0)
right = make([]int, 0)
}
return 0
}
golang为啥没有官方的gui包
有两个方面的原因,一是golang gui想让第三方来做 , 二是官方对golang的定位是主做后台。。。
参考技术A
因为golang官方主要把精力投入到go本身的发展中去(更准确的GC算法、更高的并发)。 而golang的主要贡献者不多,所以还不是很忙的过来,golang官方希望GUI可以靠社区推动发展,官方本身是没有意向发布GUI包的。
以上是关于golang 215数组中的第K个最大元素的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode:数组中的第K个最大元素215
[leetcode]215. 数组中的第K个最大元素
力扣215.数组中的第K个最大元素
LeetCode215. 数组中的第K个最大元素
215. 数组中的第K个最大元素
LeetCode 215. 数组中的第K个最大元素 | Python