zoukankan      html  css  js  c++  java
  • 寻找数组中第K大的数(Go语言版)

    题目:

    有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。

    给定一个整数数

    输入

    [1,3,5,2,2],5,3

    返回值

    给定数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。

    解法1:快排

    func findKth( a []int ,  n int ,  K int ) int {
        // write code here
        mid ,i := a[0],1
        first,tail := 0,n-1
        for first < tail{
            if a[i] < mid {
                a[i],a[tail] = a[tail],a[i]
                tail--
            }else{
                a[i],a[first] = a[first],a[i]
                first++
                i++
            }
        }
        a[first] = mid
     
     
        if K-1 == first {
            return mid
        }
        if K -1 < first {
            return findKth(a[:first],first,K)
        }
        return findKth(a[first+1:],n-first-1 ,K-first-1)
    }
    

      

  • 相关阅读:
    jenkins--部署项目
    jenkins--创建项目
    jenkins--安全配置
    jenkins--工具配置
    jenkins--系统配置
    11.17
    11.14
    11.13
    dfs
    10.31
  • 原文地址:https://www.cnblogs.com/lvpengbo/p/14452020.html
Copyright © 2011-2022 走看看