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

【力扣】数组中的第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 <= k <= nums.length <= 105
  • -104 <= nums[i] <= 104

题目链接:. - 力扣(LeetCode)

 二、解题思路

1、随机选择基准元素

2、根据基准元素将数组分为三部分:[l, left](该部分小于基准元素key)、[left + 1, right - 1](等于基准元素key)、[right, r](大于基准元素key)。

3、计算每部分所包含的元素个数,分别为a 、b = right - left - 1、 c = r - right + 1;

4、分情况讨论:

三、代码

class Solution {public int findKthLargest(int[] nums, int k) {return qsort(nums, 0, nums.length-1, k);}private int qsort(int[] nums, int l, int r, int k) {if(l == r) {return nums[l];}//随机选择基准元素int key = nums[new Random().nextInt(r-l+1) + l];//根据基准元素将数组划分为三组int left = l-1, right = r+1, i = l;while(i < right) {if(nums[i] < key) {swap(nums, ++left, i++);} else if(nums[i] == key) {i++;} else {swap(nums, --right, i);}}//分情况讨论int b = right - left - 1, c = r - right + 1;if(c >= k) {return qsort(nums, right, r, k);} else if(b + c >= k) {return key;} else {return qsort(nums, l, left, k - b - c);}}private void swap(int[] nums, int i, int j) {int tmp = nums[i];nums[i] = nums[j];nums[j] = tmp;}
}

 

相关文章:

【力扣】数组中的第K个最大元素

一、题目描述 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1,5,…...

WTM的项目中EFCore如何适配人大金仓数据库

一、WTM是什么 WalkingTec.Mvvm框架&#xff08;简称WTM&#xff09;最早开发与2013年&#xff0c;基于Asp.net MVC3 和 最早的Entity Framework, 当初主要是为了解决公司内部开发效率低&#xff0c;代码风格不统一的问题。2017年9月&#xff0c;将代码移植到了.Net Core上&…...

互联网3.0时代的变革者:华贝甄选大模型创新之道

在当今竞争激烈的商业世界中&#xff0c;华贝甄选犹如一颗璀璨的明星&#xff0c;闪耀着独特的光芒。 华贝甄选始终将技术创新与研发视为发展的核心驱动力。拥有先进的研发团队和一流设施&#xff0c;积极探索人工智能、大数据、区块链等前沿技术&#xff0c;为用户提供高性能…...

Tomcat的安全配置

1、生产环境优化 2、部分漏洞修复 转载自风险评估&#xff1a;Tomcat的安全配置&#xff0c;Tomcat安全基线检查加固-CSDN博客...

[笔记] 卷积 - 01 变速箱需要放置多少个加速度传感器?

1.讨论范围 本帖主要对卷积运算的过程和物理意义进行基本的展开&#xff0c;不涉及具体的验算过程。 最终所要达成的目标是&#xff0c;能够自然地判断某种物理现象或者某个测量目标是否与卷积运算有关&#xff0c;以及如何进行测量&#xff0c;搜集数据&#xff0c;调用三方…...

Maya崩溃闪退常见原因及解决方案

Autodesk Maya 是一款功能强大的 3D 计算机图形程序&#xff0c;被电影、游戏和建筑等各个领域的设计师广泛使用。然而&#xff0c;Maya 就像任何其他软件一样可能会发生崩溃问题。在前文中&#xff0c;小编给大家介绍了3ds Max使用V-Ray渲染时的崩溃闪退解决方案&#xff1a; …...

编码与梦想:我的CSDN创作5周年

五年前的今天&#xff0c;我带着对技术的热爱和对知识的渴望&#xff0c;踏上了CSDN的创作之旅。这个平台对于我来说&#xff0c;不仅仅是一个分享和学习的场所&#xff0c;更是我成长和自我实现的见证。 机缘 记得那时&#xff0c;我正为了一个编程难题而苦恼&#xff0c;偶…...

Vue2 基础十Vuex

代码下载 Vuex 概述 组件之间共享数据的方式&#xff1a; 父组件向子组件传值&#xff0c;是以属性的形式绑定值到子组件&#xff08;v-bind&#xff09;&#xff0c;然后子组件用属性props接收。子组件向父组件传值&#xff0c;子组件用 $emit() 自定义事件&#xff0c;父组…...

【大模型】驾驭未知领域:LLM如何处理域外或无意义的提示

驾驭未知领域:LLM如何处理域外或无意义的提示 引言一、概念解析1.1 域外提示1.2 无意义提示二、LLM处理策略2.1 上下文推断2.2 缺省回答2.3 模糊处理2.4 求助于常识三、实例对比3.1 域外提示实例3.2 无意义提示实例四、挑战与局限五、未来展望六、结语附录:术语解释与参考资料…...

Docker容器 为MySQL创建新用户和授权

当您需要为 MySQL 数据库创建一个新用户并配置其访问权限时&#xff0c;可以按照以下步骤操作。我将创建一个名为 newuser 的新用户&#xff0c;并为其授予在任何主机上访问所有数据库的权限。 创建新用户和授权步骤&#xff1a; 登录到 MySQL 服务器 首先&#xff0c;使用具有…...

openssh9.8p1更新 修复漏洞(CVE-2024-6387)

2024 年 7 月&#xff0c;互联网公开披露了一个 OpenSSH 的远程代码执行漏洞&#xff08;CVE-2024-6387&#xff09;。鉴于该漏洞虽然利用较为困难但危害较大&#xff0c;建议所有使用受影响的企业尽快修复该漏洞。 centos7 为例 yum -y install gcc make openssl-devel zlib…...

超市收银系统源码

今天给大家分享一套线上线下打通的收银系统&#xff0c;安卓/win双端线下收银台&#xff0c;可DIY、多模板的三端线上小程序商城&#xff0c;除此之外ERP进销存管理、商品管理、会员营销都很完善。 重点是系统支持OEM贴牌独立部署和全开源源码&#xff0c;非常适合一些正在寻找…...

word 使用手册

word 文档中如何将下行的指定文字退格到上行中 就像是这样的 编号&#xff1a;111 密码&#xff1a;222 编号&#xff1a;123 密码&#xff1a;321 编号&#xff1a;124 密码&#xff1a;331 变成 编号&#xff1a;111密码&#xff1a;222 编号&#xff1a;123密码&#xff1…...

vue学习day03-指令修饰符、v-bind对于样式控制的增强、v-model应用于其他表单元素

7、指令修饰符 &#xff08;1&#xff09;概念&#xff1a; 通过“.”指明一些指令后缀&#xff0c;不同后缀封装了不同的处理操作->简化代码 &#xff08;2&#xff09;按键修饰符 keyup.enter->键盘回车监听 &#xff08;3&#xff09;v-model修饰符 v-model.tri…...

JRE、JVM、JDK分别是什么。

JDK JDK的英文全称是Java Development Kit。JDK是用于制作程序和Java应用程序的软件开发环境。JDK 是 Java 开发工具包&#xff0c;它是 Java 开发者用来编写、编译、调试和运行 Java 程序的集合。JDK 包括了 Java 编译器&#xff08;javac&#xff09;、Java 运行时环境&…...

台灯护眼是真的吗?台灯怎么选对眼睛好?一文带你读懂!

近视问题&#xff0c;这一现代社会的“视力杀手”&#xff0c;正悄然影响着越来越多的人群&#xff0c;尤其是青少年群体。长时间面对电子屏幕和书本&#xff0c;加上不正确的用眼习惯&#xff0c;使得视力下降成为普遍现象。在此背景下&#xff0c;一款优质的护眼台灯显得尤为…...

【学术会议征稿】第五届计算机工程与智能控制学术会议(ICCEIC 2024)

第五届计算机工程与智能控制学术会议&#xff08;ICCEIC 2024) 2024 5th International Conference on Computer Engineering and Intelligent Control 第五届计算机工程与智能控制学术会议&#xff08;ICCEIC 2024&#xff09;将于2024年10月18日至22日在广州举办&#xff0…...

【Golang】slice切片

slice Go语言的切片是对数组的抽象。 数组的使用 package mainimport ("fmt" )// 传递固定长度的数组还是值传递的方式 func printArray(myArray [5]int) {for index, value : range myArray {fmt.Println("index:", index, "value:", value)…...

开源网安模糊测试平台SFuzz全新升级,从标准到实践助力车企安全出海

开源网安模糊测试平台SFuzz全新升级&#xff0c;参照各国相关标准要求进行针对性建设&#xff0c;可为智能网联汽车信息安全测试提供更为强大的工具支持。SFuzz向被测系统输入大量随机数据&#xff0c;模拟各种异常情况&#xff0c;可以发现被测系统内潜在的缺陷和漏洞&#xf…...

Go bytes包

bytes包 Go 语言中的 bytes 包提供了用于操作字节切片的函数集合。字节切片是 Go 语言中非常常用的数据类型&#xff0c;用于表示二进制数据或 UTF-8 编码的字符串。 bytes 包主要功能 操作和处理字节切片搜索和比较字节切片修改和分割字节切片读取和写入字节切片 使用场景 字…...

Openclaw 股票分析助手,自定义选股+情绪预警实时推送

最近我越来越觉得&#xff0c;炒股这件事&#xff0c;难的不是完全看不懂&#xff0c;而是你根本没那么多时间&#xff0c;把该看的东西全都看一遍。平时工作忙一点&#xff0c;白天不是在开会&#xff0c;就是在处理各种事情。别说一直盯着盘面了&#xff0c;有时候连行情软件…...

Linux下PCIe AER错误排查实战:从寄存器解析到故障定位

Linux下PCIe AER错误排查实战&#xff1a;从寄存器解析到故障定位 PCIe总线作为现代计算机系统中最重要的高速串行总线之一&#xff0c;其可靠性直接影响整个系统的稳定性。高级错误报告&#xff08;Advanced Error Reporting&#xff0c;AER&#xff09;机制是PCIe规范中提供…...

Audacity:开源音频编辑与录制的终极完整指南

Audacity&#xff1a;开源音频编辑与录制的终极完整指南 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity Audacity是一款功能强大的开源音频编辑软件&#xff0c;为用户提供专业级的音频录制、编辑和处理能力。无论…...

避开SDR通信的‘坑’:我在用Pluto做16QAM传输时遇到的相位偏移和同步问题

避开SDR通信的‘坑’&#xff1a;我在用Pluto做16QAM传输时遇到的相位偏移和同步问题 第一次用Pluto SDR搭建16QAM通信链路时&#xff0c;我盯着屏幕上扭曲的星座图发呆了半小时——理论上完美的16个星点&#xff0c;在实际接收时却像被无形的手揉成了一团毛线。这种挫败感想必…...

为什么XianyuAutoAgent的日志监控是AI客服稳定运行的守护神

为什么XianyuAutoAgent的日志监控是AI客服稳定运行的守护神 【免费下载链接】XianyuAutoAgent 智能闲鱼客服机器人系统&#xff1a;专为闲鱼平台打造的AI值守解决方案&#xff0c;实现闲鱼平台724小时自动化值守&#xff0c;支持多专家协同决策、智能议价和上下文感知对话。 …...

Wan2.2-I2V-A14B镜像部署教程:无需conda/pip,纯脚本一键启动

Wan2.2-I2V-A14B镜像部署教程&#xff1a;无需conda/pip&#xff0c;纯脚本一键启动 1. 镜像概述与核心优势 Wan2.2-I2V-A14B是一款专为文生视频任务优化的私有部署镜像&#xff0c;特别针对RTX 4090D 24GB显存显卡进行了深度优化。这个镜像的最大特点是开箱即用&#xff0c;…...

GWAS 实战指南:基因型数据格式转换工具全解析

1. 基因型数据格式入门&#xff1a;从VCF到BED的全面解析 做GWAS分析就像玩拼图游戏&#xff0c;而基因型数据格式就是那些形状各异的拼图块。我刚入门时最头疼的就是各种数据格式的转换&#xff0c;直到在实验室熬了三个通宵才摸清门道。现在我就把这些年踩过的坑和总结的经验…...

SDXL 1.0绘图工坊效果展示:多风格高清作品集,看看AI能画出多惊艳的图片

SDXL 1.0绘图工坊效果展示&#xff1a;多风格高清作品集&#xff0c;看看AI能画出多惊艳的图片 1. 开篇&#xff1a;当AI成为数字艺术家 想象一下&#xff0c;你只需要输入一段文字描述&#xff0c;就能在几秒钟内获得一张细节丰富、风格多样的高清图像——这不是科幻电影&am…...

UDOP-large开源可部署:微软UDOP-large镜像免配置一键上线教程

UDOP-large开源可部署&#xff1a;微软UDOP-large镜像免配置一键上线教程 1. 引言 如果你经常需要处理英文文档&#xff0c;比如整理一堆学术论文、从发票里提取关键信息&#xff0c;或者把表格数据整理成结构化格式&#xff0c;那你一定知道这活儿有多费时费力。传统方法要么…...

Qwen3-Embedding-0.6B新手指南:从零开始玩转文本嵌入

Qwen3-Embedding-0.6B新手指南&#xff1a;从零开始玩转文本嵌入 1. 什么是文本嵌入&#xff1f;为什么你需要它&#xff1f; 想象一下&#xff0c;你有一个装满各种文档、网页和笔记的文件夹。当你想找“如何用Python做数据分析”的资料时&#xff0c;你只能靠记忆或者手动翻…...