题目来源:
leetcode题目,网址:LCR 059. 数据流中的第 K 大元素 - 力扣(LeetCode)
解题思路:
维护一个长度为 K 的有序数组并不断将新的元素插入其中。
解题代码:
- class KthLargest {
- int[] biggestK; //从大到小
- public KthLargest(int k, int[] nums) {
- biggestK=new int[k];
- Arrays.sort(nums);
- for(int i=0;i<k;i++){
- if(i>=nums.length){
- biggestK[i]=-10001;
- }else{
- biggestK[i]=nums[nums.length-1-i];
- }
- }
- for(int i=0;i<biggestK.length;i++){
- System.out.print(biggestK[i]+" ");
- }
- System.out.println();
- }
-
- public int add(int val) {
- insert(val);
- return biggestK[biggestK.length-1];
- }
- public void insert(int val){
- for(int i=biggestK.length-1;i>=0;i--){
- if(val<biggestK[i]){
- return ;
- }else{
- if(i!=biggestK.length-1){
- biggestK[i+1]=biggestK[i];
- }
- biggestK[i]=val;
- }
- }
- }
- }
-
- /**
- * Your KthLargest object will be instantiated and called as such:
- * KthLargest obj = new KthLargest(k, nums);
- * int param_1 = obj.add(val);
- */
总结:
官方题解使用的是优先队列。