数组中的第K个最大元素
Contents
问题描述
- 找出数组中第k大的数
快速选择算法
- 第K大的元素在nums中的下标是nums.length-k, 把k转换成index之后,就很简单了,index不用变化,因为数组没有变化,变化的只有low和high!是我之前想的太复杂,既要改变low,high,又要改变k。
PriorityQueue实现
- 默认小根堆,想要得到大根堆,需要传入一个Comparator接口,可用lambda表达式代替:(a,b)->{return b-a;}
- 求第K大和求前K大是不一样的做法,第K大要用大根堆,而前K大要用小根堆!
- 时间复杂度并不优秀,nlog(n)
Author 段新朋
LastMod 2020-07-11