美文网首页
golang 寻找第K大

golang 寻找第K大

作者: MrBryan | 来源:发表于2021-05-24 01:44 被阅读0次
## 题目描述

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

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

示例1

## 输入
[1,3,5,2,2],5,3

## 返回值

2

golang 代码如下


import (
   "fmt"
   "testing"
)

/**
*
* @param a int整型一维数组
* @param n int整型
* @param K int整型
* @return int整型
*/
func findKth(a []int, n int, K int) int {
   // write code here
   if K > n {
       return 0
   }
   ret := sort(a, 0, len(a)-1, K)
   return ret
}

func sort(a []int, l, h, K int) int {
   middleIndx := l
   for l+1 <= h {
       if a[l+1] >= a[middleIndx] {
           a[l+1], a[middleIndx] = a[middleIndx], a[l+1]
           middleIndx++
       }
       l++
   }
   fmt.Println(a, l, h, K)
   if K == middleIndx+1 {
       return a[middleIndx]
   } else if K < middleIndx+1 {
       return sort(a, 0, middleIndx-1, K)
   } else {
       return sort(a, middleIndx+1, len(a)-1, K)
   }
}

func TestQuick(t *testing.T) {
   arr := []int{10, 3, 5, 6, 11, 12, 19, 33}
   ret := findKth(arr, len(arr), 1)
   fmt.Println(ret)
}

相关文章

  • golang 寻找第K大

    golang 代码如下

  • 寻找第k大的数

    目录:1、引子2、排序解决法3、类快排解法4、最小堆解法 1、引子 日常编码中,常见遇到这样的问题,“寻找最大的数...

  • 算法-Review

    一组N个乱序数中寻找第K大的数 冒泡或者简单排序(时间复杂度:O(K * N))for(int i == 0 ; ...

  • 快慢指针的算法应用

    快慢指针主要解决的问题: 寻找/删除第K个节点; 有关链表环问题解法:寻找/删除第K个节点。 问题一: 给定任意一...

  • Median of Two Sorted Arrays

    转化成寻找第k个最小值

  • 经典题目总结篇

    第k大:

  • Leetcode.215.Kth Largest Element

    题目 给定一个数组, 输出第k大的数. 思路 进行从大到小排序, 第k-1即为第k大的数. 总结 掌握快速排序.

  • 寻找数组中第K大的元素

    问题 tag: Medium 分析 这题最简单的做法是将数组排序,然后直接返回第K大的元素。复杂度为:O(Nlog...

  • 2022-02-23 链表专栏

    链表基础 类别 1、合并两个有序链表2、合并 k 个有序链表3、寻找单链表的倒数第 k 个节点4、寻找单链表的中点...

  • 06-20:刷题综合三:快排

    快排: 1、快速排序 2、快速排序寻找第K个大 3、最小的K个数 1、手写快排算法 class Solution:...

网友评论

      本文标题:golang 寻找第K大

      本文链接:https://www.haomeiwen.com/subject/utmtsltx.html