作者:印度神油两性a | 来源:互联网 | 2023-06-14 14:24
文章目录思路解法1-冒泡解法2-Arrays.sort()解法3-堆在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。
文章目录
- 思路
- 解法1-冒泡
- 解法2-Arrays.sort()
- 解法3-堆
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
思路
(1)在不考虑堆的情况下,冒泡排序。效果很差。
解法1-冒泡
执行用时 :196 ms, 在所有 Java 提交中击败了5.03%的用户
内存消耗 :37.8 MB, 在所有 Java 提交中击败了46.47%的用户
class Solution {
public int findKthLargest(int[] nums, int k) {
for(int i=0;i for(int j=0;j if(nums[j] > nums[j+1]){
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
return nums[nums.length-k];
}
}
解法2-Arrays.sort()
执行用时 :3 ms, 在所有 Java 提交中击败了78.58%的用户
内存消耗 :38.4 MB, 在所有 Java 提交中击败了12.58%的用户
class Solution {
public int findKthLargest(int[] nums, int k) {
Arrays.sort(nums);
return nums[nums.length-k];
}
}
解法3-堆
class Solution {
public int findKthLargest(int[] nums, int k) {
PriorityQueue heap = new PriorityQueue<>();
for(int n: nums){
heap.add(n);
if(heap.size()>k){
heap.poll();
}
}
return heap.poll();
}
}
Heroin X
发布了74 篇原创文章 · 获赞 16 · 访问量 1801
私信
关注