544. Top k Largest Numbers【medium】
2024-09-28 01:04:22
Given an integer array, find the top k largest numbers in it.
Example
Given [3,10,1000,-99,4,100]
and k = 3
.
Return [1000, 100, 10]
.
解法一:
class Solution {
public:
/*
* @param nums: an integer array
* @param k: An integer
* @return: the top k largest numbers in array
*/
vector<int> topk(vector<int> nums, int k) {
std::priority_queue<int> heap;
for(int i = ; i < nums.size(); i++) {
heap.push(nums[i]);
} std::vector<int> result;
for (int i = ; i < k; i++) {
result.push_back(heap.top());
heap.pop();
} return result;
}
};
优先队列,类似于维护一个大小为k的最大堆/最小堆(STL中的priority_queue默认是最大堆),时间复杂度为O(n * logk)
解法二:
class Solution {
/*
* @param nums an integer array
* @param k an integer
* @return the top k largest numbers in array
*/
public int[] topk(int[] nums, int k) {
int[] temp = new int[k];
if(nums == null || nums.length == 0) {
return temp;
}
quickSort(nums, 0, nums.length - 1, k); if(nums.length < k) {
return nums;
} for(int i = 0; i < k; i++) {
temp[i] = nums[i];
} return temp;
} public void quickSort(int[] nums, int start, int end, int k) {
if (start >= end) {
return;
} int left = start, right = end;
int mid = left + (right - left) / 2;
int pivot = nums[mid]; while(left <= right) {
while(left <= right && nums[left] > pivot) {
left++;
} while(left <= right && nums[right] < pivot) {
right--;
} if(left <= right) {
swap(nums, left, right);
left++;
right--;
}
} quickSort(nums, start, right, k);
quickSort(nums, left, end, k);
} private void swap(int[] nums, int left, int right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
};
快速排序,取出前k大的数,时间复杂度O(n*logn + k)
最新文章
- css学习笔记(1)
- maven权威指南学习笔记(四)&mdash;&mdash; maven生命周期(lifecycle)
- system verilog中的类型转换(type casting)、位宽转换(size casting)和符号转换(sign casting)
- [ACM_模拟] ZOJ 3713 [In 7-bit 特殊输出规则 7bits 16进制]
- ADB 在 Android SDK 的中的路径
- PSYoungGen /PSOldGen/PSPermGen区别
- IOS基础 Day-1手动内存管理
- spring集合类型的setter注入的一个简单例子
- PADSPOWERPCB中怎样去隐藏一些PIN脚
- iOS: NSMutableArray的方法removeObject:inRange:
- Qt---自定义界面之 Style Sheet
- Xampp相关命令
- lumion室内渲染二6.3
- WordPress版微信小程序开发系列(二):安装使用问答
- ThinkPHP 3.1.2 CURD特性 -3
- Java 时间、字符串
- position:fixed ,锚点定位不准确的问题
- Python3基础 __getattr__ 访问不存在的属性时,新增提示功能
- MT【139】公比为有理数
- 【loj2639】[Tjoi2017]不勤劳的图书管理员