java - 数组中第 K 个最大的元素 - LeetCode 问题
问题描述
我一直在尝试解决数组中的第 K 个最大元素
这是我的代码:
public static int findKthLargest(int[] nums, int k) {
Queue<Integer> q = new LinkedList<>();
int max = Integer.MIN_VALUE;
for(int i=0; i< nums.length; i++){
if(nums[i]>=max){
max = nums[i];
if(q.size() <k)
q.add(max);
else{
q.poll();
q.add(max);
}
}
}
return q.peek();
}
我的代码背后的主要思想是,我将最大值存储在长度为 K 的队列中,并且在遍历数组中的所有值之后,我返回第一个 Item,因为它是最大值 Kth 元素。
但它在以下测试用例中失败:输入:Array = [2, 1] K = 2 -- 预期输出:1 -- 我的输出:2
我只是不明白,1 怎么应该是数组中的第二大元素?如果我弄乱了任何东西,请纠正我。
解决方案
我只是不明白,1 怎么应该是数组中的第二大元素?
如果数组只包含两个元素 -1
和2
,那么2
是最大的,并且1
是第二大的。它也是最小的,但这与问题无关。
你需要想出一个更好的解决问题的办法。当前算法仅在遇到新的“max”元素时才插入队列。但是如果你得到的第一个元素是最大的呢?您只会将其输入队列并错过所有其他人。
另外,为什么要使用队列?也许有序集合在这里会更有用?
推荐阅读
- android - 如何使用导航组件管理权限请求代码?
- function - 如何将 Dyalog APL 函数保存在文本文件中?
- json - 在 django 中发出 post 请求时如何传递十进制值?
- r - 零膨胀泊松分布的经验和理论分布图
- keras - 如何制作 2D softmax 层?
- javascript - Object.values 在非空对象上返回空数组
- ios - 如何立即从兼容 MFi 的配件中读取数据?
- python - 如何缩短 Facebook X-path
- python - 在函数中使用 lambda 和 last_valid_index 创建数据框
- python - 如何将 2dp 添加到 Plotly Go Sunburst