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