215. 数组中的第K个最大元素(JS实现)

js代码-数组中的第K个最大元素 立即下载

1 题目

在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
示例 1:
输入: [3,2,1,5,6,4] 和 k = 2
输出: 5
示例 2:
输入: [3,2,3,1,2,4,5,5,6] 和 k = 4
输出: 4
说明:
你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。

链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array

2 思路

这道题考察排序,根据题意,选择堆排序比较合适

3代码

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
var findKthLargest = function(nums, k) {
 if (nums.length <= 1) return nums[k-1] || null;

  nums.unshift(null);     //由于孩子节点的索引为父节点索引的2倍,因此为了计算方便数组第一项留空
  let len = Math.floor((nums.length-1) / 2);

  for (let i=len; i>=1; i--) {
    adjust(i, nums.length-1);
  }

  for (let i=nums.length-1; i>=nums.length - k; i--) {   //找到第k大的数后,结束循环
    swap(1, i);
    adjust(1, i-1);
  }

  return nums[nums.length - k];

  function adjust(s, maxIndex) {    //调整不满足的子树结构使其符合大顶堆,s为需要调整的数
    let temp = nums[s];

    for (let i=2*s; i<=maxIndex; i*=2) {    //依次比较子节点,找到放置s的位置
      if (i+1 <= maxIndex && nums[i] < nums[i+1]) i++;

      if (temp > nums[i]) break;

      nums[s] = nums[i];
      s = i;
    }

    nums[s] = temp;
  }

  function swap(i,j) {
    let temp = nums[i];
    nums[i] = nums[j];
    nums[j] = temp;
  }
};
js代码-第 k 大的数字 立即下载

相关推荐

ROST_CM6软件之词频分析、社会网络和语义网络分析、情感分析

简介 ROST CM 6是武汉大学沈阳教授研发编码的国内目前唯一的以辅助人文社会科学研究的大型免费社会计算平台。该软件可以实现微博分析、聊天分析、全网分析、网站分析、浏览分析、分词、词频统计、英文词频统计、流量分析、聚类分析等一系列文本分析。 社会网络和语义网络分析(S) 数据 注意,保存时编码要为ANSI 所以这里需要转换一下 准备自定义表与停词表 例如 同时,点击快速分析后,将会弹出网络图 对网络图进行设置 对布局进行设置 对节点、边进行设置 最终效果图 修改 情感分析

积一时之步,臻千里之遥程 9万+

215. 数组中的第K个最大元素---js解法

题目描述: 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 215. 数组中的第K个最大元素 var findKthLargest = function(nums, k) { nums.sort((a,b)=>{ return a-b }) for(let i=nums.length-1;i>=0;--i){ if(nums

qq_45679015的博客 317

实战教程:用YOLOv11+PyQt5打造工地安全帽检测系统(附完整数据集)

本文提供了一份完整的实战指南,详细介绍了如何利用YOLOv11目标检测模型与PyQt5界面库,从零开始构建一个智能工地安全帽检测桌面应用。内容涵盖高质量数据集的准备与标注、YOLOv11模型训练与调优,以及如何使用PyQt5开发流畅、专业的图形用户界面,最终实现一个可实际部署的AI安全监控系统。

plum99的博客 738

215. 数组中的第K个最大元素 JavaScript实现

215. 数组中的第K个最大元素 一、topk问题 考察的核心是可以进行topk排序算法。解决topk问题的排序算法有快速排序、堆排序。 二、python知识 1、运算符 // // 取整除 - 返回商的整数部分(向下取整) 2、对于堆而言,确定最后一个非叶子节点的根节点 :(n-2)//2 (若叶子节点为i,则他的父节点为(i-1)//2 ) 3、for i in range 实现100 - 1 倒序遍历 //第三个参数表示的是100所有进行的操作,每次加上-1,直到0 for i in range(10

weixin_43466639的博客 1980

从零到一:RagFlow源码架构深度解析与二次开发实战指南

本文深入解析RagFlow源码架构,提供从环境搭建到二次开发的全流程实战指南。作为企业级AI搜索框架,RagFlow通过模块化设计和多模态处理能力,支持自定义智能体开发与文搜文档功能,帮助开发者高效构建智能搜索系统。

w1x2y3的博客 267

HFSS的边界条件与激励方式

在电磁场理论学习中我们知道,电磁场问题的求解都归结于麦克斯韦(Maxwell)方程组的求解,在HFSS中波动方程的求解同样是由微分形式的麦克斯韦方程推导出来的。而边界条件定义了求解区域的边界以及不同物体交界处的电磁场特性,是求解麦克斯韦方程的基础。 只有在假定场矢量是单值、有界、并且沿空间连续分布的前提下,微分形式的麦克斯韦方程组才是有效的;而在求解区域的边界,不同介质的交界处和场源处,场矢量是不连续的,那么场的导数也就失去了意义。 边界条件就是定义跨越不连续边界处的电磁场特性,因此,正确地理解、定义并

ASH_GUARDIAN的博客 1万+

JS算法题:找到数组中第 k 大的元素

给定一个未排序的整数数组,找到其中第 k 大的元素。

weixin_44510200的博客 633

洪水风险图制作全流程:HEC-RAS 与 ArcGIS 的耦合应用

本文系统介绍HEC-RAS水动力模拟软件在水利工程中的应用技术。内容涵盖:1)软件理论与安装;2)一维地形数据导入与河网构建;3)恒定流/非恒定流计算及模型调试要点;4)构筑物建模技术(桥梁、堰闸等);5)二维水动力模拟与溃坝分析;6)洪水风险图绘制。重点讲解水面线调试、糙率选取、报错分析等实操难点,通过案例教学实现从基础到工程应用的全流程技术掌握。该培训适用于防洪评价、河道治理等水利工程数值模拟需求。

2403_89974123的博客 1050

215. 数组中的第K个最大元素(JavaScript版)

题目: 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 说明: 你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。 解题: class MinHeap{ constructor() { this.heap = [] } // ...

包磊磊的博客 610

003:大疆智图新手入门:从下载安装到首次建模实战

本文为大疆智图新手提供从下载安装到首次三维建模的完整实战指南。详细介绍了软件安装的硬件要求、试用许可申请流程,并指导用户如何准备航拍数据或使用开源样例进行首次建模。通过分步操作演示与核心参数设置讲解,帮助初学者快速掌握使用大疆智图进行实景三维重建的核心流程与常见问题解决方案。

t8u9v0的博客 701

Qt 文件对话框(QFileDialog)实战指南 —— 从基础到高级应用

本文是Qt文件对话框(QFileDialog)的实战指南,从基础静态函数调用到高级对象模式应用,全面解析了文件选择、保存、目录选取及多选等核心功能。文章深入探讨了MIME类型过滤、自定义侧边栏、信号槽实时响应及状态持久化等高级技巧,并提供了跨平台开发中的避坑指南与最佳实践,帮助开发者高效、稳健地集成文件操作功能。

weixin_29306261的博客 376

leetcode215题--数组中的第K个最大元素(JS排序方法大全)

冒泡排序 var findKthLargest = function(nums, k) { for(let i = 0;i < nums.length - 1;i++){ for(let j = 0; j < nums.length - i - 1;j++){ if(nums[j] > nums[j+1]){ var temp = nums[j]; nums[j] = nums[

impact_factor的博客 665

无人机WIFI集群组网技术详解及成本分析

无人机WIFI集群组网技术是指利用无人机作为移动平台,通过集成高性能的WIFI模块,实现多架无人机之间以及无人机与地面控制站之间的无线通信组网。在协议层面,无人机WIFI集群组网需要遵循标准的无线通信协议,如IEEE 802.11系列(即WIFI标准),同时可能还需定制或优化路由协议、媒体访问控制(MAC)协议等,以确保高效、可靠的数据传输。数据安全与隐私保护:无人机集群组网中传输的数据可能涉及敏感信息,需采取加密、认证等安全措施,确保数据传输的安全性和用户隐私的保护。根据性能不同,价格差异较大。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1583

leetcode215:js实现数组中的第K个最大元素

题目: 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 const array = [3, 2, 1, 5, 6, 4]; const K = 2; // 第...

sinat_41747081的博客 1145

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JS实现堆 & 215.数组中的第K个最大元素

典型用法: 维护一个大小为 k 的最小堆,堆顶就是"最大的 k 个元素中的最小值",即第 k 大元素。遍历数组时,元素入堆,堆大小超过 k 就弹出堆顶(淘汰最小值),最终堆顶就是答案。核心性质: 父节点的值始终 <= 子节点的值,堆顶(index 0)永远是全局最小值。215.数组中的第K个最大元素。

vancece 262

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

JavaScript实现 - LeetCode刷题 -【数组中的第K个最大元素】- 第 215 题 !!!

题目: LeetCode题目链接 题目截图: 解题步骤: 1.构建一个最小堆,并依次把数组的值插入堆中 2.当堆的容量超过K,就删除堆顶 3.插入结束后,堆顶就是第K个最大元素,就比如只剩下三个元素了,则堆顶就是第三个最大元素 代码: // 最小堆 class MinHeap { constructor() { this.heap = []; } // 交换 swap(i1, i2) { const temp = this.heap[i1]; this.heap[

帅帅邬同学的博客 220

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【算法-LeetCode】215. 数组中的第K个最大元素(暴力sort;快速排序)

LeetCode215. 数组中的第K个最大元素 发布:2021年7月29日17:34:28 问题描述及示例 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 来源:力扣(LeetCode) 链接:https://leetcode-cn

赖念安的博客 397

三刷”数组中的第K个最大元素“,我终于学会了堆排序

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情 灵魂拷问 身为前端的你,数据结构排序算法掌握得怎么样了,我想大家对冒泡排序,插入排序,快速排序已经掌握了,业务代码中 sort() 方法也用的不亦乐乎,但是提起堆排序肯定是马马虎虎,因为我也是,leetcode有这么一道题,我刷了3遍,终于弄明白了堆排序,今天和大家分享一下,如果能帮到你,那真是太好...

73

js的sort函数对数字数组进行排序

刷到力扣215题,找到数组第k个最大元素的时候,采用js语言,直接对数组进行sort排序,结果出错了。如需升序,则为 sort((a,b) => a-b),降序则为sort((a,b) => b-a)sort方法不加参数会默认用字符串比较的方式去比较,所以按这种方法,‘8’> '10',只需要在sort函数的括号中加入参数,该参数是一个函数,此函数说明比较方法。

rhythm_ing_good的博客 126

JS数据结构堆

1.什么是堆? 堆是一种特殊的完全二叉树 所有的节点都 大于等于 或 小于等于 它的子节点,最大堆的根节点大于等于它的子节点,最小堆的根节点小于等于它的子节点 JS中常用数组表示堆 2.常用操作 获取父节点 获取左节点 获取右节点 上移节点 下移节点 插入节点 删除节点 获取堆顶 获取堆的大小 寻找第K个最大元素 3.定义堆类 以定义一个最小堆为例 class MinHeap{ constructor() { this.heap = []; } // 获取父

weixin_46224014的博客 1552

leetcode 215. 数组中的第K个最大元素 js

暴力解法: 题目要求我们找到「数组排序后的第 k 个最大的元素,而不是第 k个不同的元素」。「数组排序后的第 kk 个最大的元素」换句话说:从右边往左边数第 k 个元素(从 1 开始),那么从左向右数是第几个呢,我们列出几个找找规律就好了。 一共 6个元素,找第 2大,下标是 4; 一共 6个元素,找第 4大,下标是 2。 因此升序排序以后,目标元素的下标是 N - k,这里 N是输入数组的长度。 var findKthLargest = function(nums, k) { nu...

~ 384

215. 数组中的第K个最大元素 BFPRT最牛解法

在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 说明: 你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。 思路:堆、改进快排、BFPRT...

少说,多做。 3314

LeetCode 215:数组中的第K个最大元素 - 两种高效解法详解

在算法面试中,查找数组中第K个最大元素是一个经典问题。LeetCode第215题要求我们在未排序的数组中找到第K大的元素。本文将介绍两种高效的解决方案:快速选择算法和堆(优先队列)方法,帮助你全面掌握这道高频面试题。

weixin_44435110的博客 1627

【LeetCode 215】数组中的第K个最大元素

题目描述 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 说明: 你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。 解题思路 最直接的思路就是对数组进行排序,然后直接返回排序后数组的倒数第k个元素。 除了使用sort()方法直接对数组进行排序之外,我们还

公众号:前端充电宝 2162

215. 数组中的第K个最大元素

215. 数组中的第K个最大元素

底层码农 6224
上一篇: 213. 打家劫舍 II(JS实现)
下一篇: 216. 组合总和 III(JS实现)
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值