news 2026/3/18 8:03:41

力扣刷题:数组中的第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/3/13 9:41:40

构建软件的“免疫系统”:从缺陷修复到主动防御的测试哲学

超越“救护车”式的测试困境 传统软件测试常常被比作“医疗救护”——在系统出现症状后紧急救治。然而&#xff0c;在数字化生存已成为常态的今天&#xff0c;这种被动响应模式愈发显得力不从心。频发的线上故障、隐蔽的安全漏洞、脆弱的用户体验&#xff0c;无不呼唤着一种全…

作者头像 李华
网站建设 2026/3/14 2:45:59

Open-AutoGLM模板深度拆解,揭秘头部AI团队不愿透露的流程细节

第一章&#xff1a;Open-AutoGLM模板的核心理念与架构设计Open-AutoGLM 是一个面向生成式语言模型自动化任务的开源模板框架&#xff0c;旨在通过模块化设计和标准化接口降低复杂AI应用的开发门槛。其核心理念是“可组合、可扩展、可复现”&#xff0c;将自然语言处理任务拆解为…

作者头像 李华
网站建设 2026/3/13 3:21:39

Excalidraw AI加快产品需求评审周期

Excalidraw AI&#xff1a;让产品需求评审从“听你说”变成“一起画” 在一次典型的产品评审会上&#xff0c;你是否经历过这样的场景&#xff1f;产品经理口若悬河地描述着一个复杂的用户流程&#xff1a;“当用户提交表单后&#xff0c;系统先做风控校验&#xff0c;如果通过…

作者头像 李华
网站建设 2026/3/17 6:47:11

34、SharePoint 开发:功能部署与元素管理全解析

SharePoint 开发:功能部署与元素管理全解析 1. 开篇概述 在 SharePoint 开发中,我们常常会创建各种类型的项目,如列表、Web 部件、事件接收器等,然后通过按下 F5 键将这些项目部署到 SharePoint 中。本文将深入探讨按下 F5 键时,SharePoint 项目打包和部署背后的原理,同…

作者头像 李华
网站建设 2026/3/16 9:50:43

Excalidraw AI移动端运行性能优化方案

Excalidraw AI移动端运行性能优化方案 在移动办公和即时协作日益普及的今天&#xff0c;越来越多用户希望能在手机或平板上快速完成架构图、流程草图的设计表达。Excalidraw 凭借其独特的“手绘风”视觉语言与极简交互&#xff0c;已成为技术团队中高频使用的白板工具。当它集成…

作者头像 李华
网站建设 2026/3/13 3:22:14

激光熔覆中的 Comsol 模拟:熔池探秘与激光增材制造仿真

激光熔覆/comsol模拟/熔池/激光增材制造/仿真 激光熔覆同步送粉&#xff0c;熔池流动传热耦合&#xff0c;考虑潜热&#xff0c;包含粘性耗散和布辛涅斯克近似&#xff0c;在激光增材制造领域&#xff0c;激光熔覆同步送粉技术凭借其独特优势&#xff0c;成为材料表面改性和零件…

作者头像 李华