当前位置: 面试刷题>> 前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) 的时间复杂度。 - 在实际面试中,了解并讨论不同方法的时间复杂度和空间复杂度是非常重要的。
推荐面试题