当前位置: 首页 > news >正文

河北邢台路桥建设公司网站小程序开发教程推荐

河北邢台路桥建设公司网站,小程序开发教程推荐,网站收录地址,怎样注册公司邮箱账号题目描述 在未排序的数组中找到第 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 总…

题目描述

在未排序的数组中找到第 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 ≤ 数组的长度。来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法 1:排序

思路

直接给数组降序排序,再输出第 k-1 个数字。

复杂度分析

  • 时间复杂度:$O(NlogN)$,N 是数组长度。
  • 空间复杂度:$O(1)$。

代码

JavaScript Code

/*** @param {number[]} nums* @param {number} k* @return {number}*/
var findKthLargest = function (nums, k) {// 降序排序nums.sort((a, b) => b - a);return nums[k - 1];
};

方法 2:小顶堆

思路

维护一个大小为 k 的小顶堆,最后输出堆顶。

大顶堆也可以,就不写了。

复杂度分析

  • 时间复杂度:$O(klogk)$。
  • 空间复杂度:$O(k)$。

代码

JavaScript Code

/*** @param {number[]} nums* @param {number} k* @return {number}*/
var findKthLargest = function (nums, k) {const minHeap = new MinHeap();nums.forEach(n => {const size = minHeap.size();if (size < k) minHeap.insert(n);else if (size === k) {if (minHeap.peek() < n) {minHeap.pop();minHeap.insert(n);}}});return minHeap.peek();
};// *************************************************class Heap {constructor(list = [], comparator) {this.list = list;this.comparator = comparator;this.init();}init() {const size = this.size();for (let i = Math.floor(size / 2) - 1; i >= 0; i--) {this.heapify(this.list, size, i);}}insert(n) {this.list.push(n);const size = this.size();for (let i = Math.floor(size / 2) - 1; i >= 0; i--) {this.heapify(this.list, size, i);}}peek() {return this.list[0];}pop() {const last = this.list.pop();if (this.size() === 0) return last;const returnItem = this.list[0];this.list[0] = last;this.heapify(this.list, this.size(), 0);return returnItem;}size() {return this.list.length;}
}class MinHeap extends Heap {constructor(list, comparator) {if (typeof comparator != 'function') {comparator = function comparator(inserted, compared) {return inserted > compared;};}super(list, comparator);}heapify(arr, size, i) {let smallest = i;const left = Math.floor(i * 2 + 1);const right = Math.floor(i * 2 + 2);if (left < size && this.comparator(arr[smallest], arr[left]))smallest = left;if (right < size && this.comparator(arr[smallest], arr[right]))smallest = right;if (smallest !== i) {[arr[smallest], arr[i]] = [arr[i], arr[smallest]];this.heapify(arr, size, smallest);}}
}
http://www.yayakq.cn/news/131228/

相关文章:

  • 加盟做网站网站导航是什么
  • 长宁区小学网站建设在线图片生成器
  • 嘉兴网站建设电话宣城市建设银行网站
  • php网站开发外文文献电商详情页模板免费套用
  • 网站如果实现微信支付网站关闭与域名备案
  • 哈尔滨在线制作网站辽宁招投标工程信息网
  • 网站 pr培训收费网站建设
  • 网站建社石家庄服装网站建设推荐
  • 百度站长工具网站验证宣传册设计与制作合同
  • 建网站服务器用什么wordpress 添加固定字段
  • 加盟招商推广网站广州专业的网站建设
  • 网站空间商拿不回数据wordpress主题配置修改
  • 个体户做网站与公司好wordpress自定义字段面板
  • 网站建设与制作软件付费链接生成平台
  • 网站建设推销话术案例厦门网站建设企
  • 做k12网站装修公司怎样拉客户
  • 阿里云建站保证销售额织梦源码模板下载商城网站模板 整站带栏目高端大气上档次含数据
  • 济宁哪里有网站建设百度推广优化方案
  • 哪个设计网站赚钱网站建设流程百度经验
  • 有几个网站如何做外贸全国城乡和住房建设厅查询网
  • 泉州企业免费建站广州网站开发培训
  • 家具设计师常去的网站做3d图的网站有哪些软件有哪些
  • 新民电子网站建设哪家好网泰网站建设
  • 网站建设工具品牌有门户网站建设好如何维护
  • 关于中国幼教网站开发的经验四川学校网站建设公
  • 有专做代金券的网站吗手机怎么登录自己做的网站
  • 网站右侧悬浮代码深圳福田网站建设
  • 个人建站 wordpress建设内部网站
  • 时尚美容网站建设seo顾问是什么职业
  • 怎么把网站上传到空间济宁做网站公司找融合