news 2026/4/16 16:14:53

力扣刷题:数组中的第k个最大元素

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣刷题:数组中的第k个最大元素

题目:
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。

请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

输入: [3,2,1,5,6,4], k = 2
输出: 5

示例 2:

输入: [3,2,3,1,2,4,5,5,6], k = 4
输出: 4

解析:
这道题我参考了力扣一个大神的思路(解析链接),将快速排序改成了快速选择:
基于快速排序的分治思想,但只递归处理包含目标值的那一部分

  1. 选择基准值:从数组中选一个元素作为基准(pivot)

  2. 分区:将数组分为三部分:

    left:所有大于基准值的元素

    mid:所有等于基准值的元素

    right:所有小于基准值的元素

  3. 判断目标位置:
    如果 k ≤ left.length,说明第k大的元素在left中
    如果 k > left.length 且 k ≤ left.length + mid.length,说明第k大的元素就是基准值
    否则,第k大的元素在right中

  4. 递归处理:在相应的子数组中继续查找

/** * @param {number[]} nums * @param {number} k * @return {number} */varfindKthLargest=function(nums,k){if(nums.length<=1){returnnums[0]}constmidIndex=Math.floor(nums.length/2)constmideValue=nums[midIndex]constleft=[]constmid=[]constright=[]for(leti=0;i<nums.length;i++){if(mideValue<nums[i]){left.push(nums[i])}elseif(mideValue>nums[i]){right.push(nums[i])}else{mid.push(nums[i])}}if(k<=left.length){returnfindKthLargest(left,k)}elseif(k-left.length-mid.length<=0){returnmid[0]}else{returnfindKthLargest(right,k-left.length-mid.length)}};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 22:18:47

16、Photoshop自动化操作全攻略

Photoshop自动化操作全攻略 一、创建图像PDF文件 1.1 操作步骤 从Photoshop中,点击“File”,然后选择“Browse in Bridge”打开Adobe Bridge。 点击“Window”,接着点击“Workspace”,再点击“Output”,此时Bridge会显示用于输出图像的面板。 确保选中“PDF”按钮。 …

作者头像 李华
网站建设 2026/4/15 6:57:05

29、深入探索SharePoint Web部件开发:从可视化到代码化的全面指南

深入探索SharePoint Web部件开发:从可视化到代码化的全面指南 1. 创建可视化Web部件 在开发SharePoint Web部件时,首先要确认新任务是否成功添加到任务列表中。具体操作如下: - 导航至SharePoint网站的主页。 - 点击左侧导航菜单中的“任务”列表。 当任务列表显示出来…

作者头像 李华
网站建设 2026/4/10 7:36:37

Excalidraw AI用户反馈驱动的产品迭代

Excalidraw&#xff1a;当用户反馈成为产品进化的引擎 你有没有经历过这样的场景&#xff1f;在一次远程产品评审会上&#xff0c;团队围坐在虚拟白板前&#xff0c;却因为工具太“正式”而不敢轻易下笔——线条必须笔直、形状要对齐、排版得规整。结果&#xff0c;创意还没展开…

作者头像 李华
网站建设 2026/4/12 17:35:27

Open-AutoGLM拖拽式开发十大技巧(90%工程师不知道的隐藏功能)

第一章&#xff1a;Open-AutoGLM拖拽式开发入门Open-AutoGLM 是一款面向自然语言处理任务的可视化低代码开发平台&#xff0c;专为数据科学家与工程人员设计&#xff0c;支持通过拖拽组件快速构建、训练和部署大语言模型流水线。用户无需编写大量代码&#xff0c;即可完成从数据…

作者头像 李华
网站建设 2026/4/13 13:35:51

告别问卷设计焦虑:百考通AI如何让调研变得“聪明”又高效

在数据驱动的时代&#xff0c;问卷调研已成为产品迭代、学术研究、市场洞察不可或缺的工具。然而&#xff0c;许多设计师、产品经理、科研人员甚至HR&#xff0c;都曾陷入过这样的困境&#xff1a;面对空白文档&#xff0c;不知从何问起&#xff1b;精心设计的问题&#xff0c;…

作者头像 李华
网站建设 2026/4/16 14:33:30

云原生应用性能基准测试与容量规划实战指南

1. 云原生性能测试的范式转变传统单体应用的性能测试方法在云原生架构下面临显著挑战。微服务架构、容器化部署、动态编排等特性&#xff0c;要求测试从业者重新定义性能基准测试的维度与指标。云原生性能测试不再仅仅是测量单节点的响应时间与吞吐量&#xff0c;而需要关注服务…

作者头像 李华