当前位置: 面试刷题>> 前k大数 (经典算法题500道)
### 题目描述
给定一个未排序的整数数组(nums)和一个整数 k,请找出数组中前 k 大的元素。你可以假设 0 ≤ k ≤ 数组长度。
### 示例
**输入**: nums = [3,2,1,5,6,4], k = 2
**输出**: [5,6]
### PHP 示例代码
```php
function findKthLargest($nums, $k) {
// 使用 PHP 内置的 sort 函数进行排序(注意这会改变原数组,实际应用中可能需要复制数组)
rsort($nums); // 逆序排序
return array_slice($nums, 0, $k); // 截取前 k 大的元素
}
// 示例
$nums = [3, 2, 1, 5, 6, 4];
$k = 2;
$result = findKthLargest($nums, $k);
print_r($result); // 输出: Array ( [0] => 6 [1] => 5 )
// 码小课网站中有更多相关内容分享给大家学习,涵盖算法、数据结构等。
```
### Python 示例代码
```python
def findKthLargest(nums, k):
# 使用 Python 内置的排序函数进行排序,然后切片
nums.sort(reverse=True)
return nums[:k]
# 示例
nums = [3, 2, 1, 5, 6, 4]
k = 2
result = findKthLargest(nums, k)
print(result) # 输出: [6, 5]
# 码小课网站中有更多相关内容分享给大家学习,包括算法优化、面试技巧等。
```
### JavaScript 示例代码
```javascript
function findKthLargest(nums, k) {
// 使用 JavaScript 的 sort 方法进行排序,然后截取前 k 大的元素
nums.sort((a, b) => b - a); // 降序排序
return nums.slice(0, k);
}
// 示例
const nums = [3, 2, 1, 5, 6, 4];
const k = 2;
const result = findKthLargest(nums, k);
console.log(result); // 输出: [6, 5]
// 码小课网站中有更多相关内容分享给大家学习,涉及前端、后端、算法等多个领域。
```
### 注意
- 这些示例代码都使用了排序方法,但在处理大数据集时,这种方法可能不是最高效的,因为它需要 O(n log n) 的时间复杂度。对于大数据集,可以考虑使用最小堆(Min Heap)等数据结构来维护前 k 大的元素,这样可以达到 O(n log k) 的时间复杂度。
- 在实际面试中,了解并讨论不同方法的时间复杂度和空间复杂度是非常重要的。