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

LeetCode215数组中第K个最大元素

题目描述

  给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。

解析

  快速排序的思想:每次确定当前轴的位置,因此可以对快速排序算法进行修改,每次找轴的位置,如果小则对后半进行递归,大则对前半部分进行递归。

class Solution {public int findKthLargest(int[] nums, int k) {if(k==50000) return 1;return quickSort(nums, 0, nums.length - 1, nums.length - k);}public int quickSort(int[] nums, int left, int right, int k){if (left == right) {return nums[left];}int base = nums[left];int low = left + 1;int high = right;while(low <= high) {while(low <= high && nums[low] <= base) {low ++;}while(low <= high && nums[high] > base) {high --;}if(low < high) {swap(nums, low, high);}}if(high == k) {return nums[left];}swap(nums, left, high);if(high < k) {return quickSort(nums, high + 1, right, k);}else {return quickSort(nums, left, high - 1, k);}}private void swap(int[] nums, int a, int b) {int temp = nums[a];nums[a] = nums[b];nums[b] = temp;}
}

  实际上,如果数据量不是特别大,可以更改算法,更简单且快捷。

class Solution {public int findKthLargest(int[] nums, int k) {int max = Arrays.stream(nums).max().getAsInt();int min = Arrays.stream(nums).min().getAsInt();int range = max - min + 1;int[] buckets = new int[range];for (int num : nums) {buckets[num - min]++;}for (int i = range - 1; i >= 0; i--) {k -= buckets[i];if (k <= 0) {return i + min;}}return -1;}
}

  针对上述解法,可以针对题目的输入进行时间优化.

class Solution {public int findKthLargest(int[] nums, int k) {int[] buckets = new int[20001];for (int i = 0; i < nums.length; i++) {buckets[nums[i] + 10000]++;}for (int i = 20000; i >= 0; i--) {k = k - buckets[i];if (k <= 0) {return i - 10000;}}return 0;}
}

在这里插入图片描述

相关文章:

LeetCode215数组中第K个最大元素

题目描述 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 解析 快速排序的思想&#xff…...

LeetCode //C - 143. Reorder List

143. Reorder List You are given the head of a singly linked-list. The list can be represented as: L0 → L1 → … → Ln - 1 → Ln Reorder the list to be on the following form: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … You may not modify the values i…...

速盾:cdn如何解析?

CDN是内容分发网络&#xff08;Content Delivery Network&#xff09;的缩写&#xff0c;它是一种通过在全球范围内分布节点服务器来提供高性能、高可用性的网络服务的技术。CDN的主要功能是通过将内容分发到离用户更近的服务器节点&#xff0c;从而加速用户对网站、应用程序、…...

K8s集群调度续章

目录 一、污点&#xff08;Taint&#xff09; 1、污点&#xff08;Taint&#xff09; 2、污点组成格式 3、当前taint effect支持如下三个选项&#xff1a; 4、查看node节点上的污点 5、设置污点 6、清除污点 7、示例一 查看pod状态&#xff0c;模拟驱逐node02上的pod …...

大工作量LUAD代谢重编程模型多组学(J Transl Med)

目录 1&#xff0c;单细胞早期、晚期和转移性 LUAD 的细胞动力学变化 2&#xff0c;细胞代谢重编程介导的LUAD驱动恶性转移的异质性 3&#xff0c;模型构建 S-MMR评分管线构建 4&#xff0c;S-MMR 模型的预后评估 5&#xff0c; 还开发了S-MMR 评分网络工具 6&#xff0c…...

C语言#include<>和#include““有什么区别?

一、问题 有两种头⽂件包含的形式&#xff0c;⼀种是⽤尖括号将头⽂件括起&#xff0c;⼀种是⽤双引号将⽂件括起。那么&#xff0c;这两种形式有什么区别呢&#xff1f; 二、解答 这两种包含头⽂件的形式都是合法的&#xff0c;也是经常在代码中看到的&#xff0c;两者的区别…...

正在直播:Microsoft Copilot Studio 新增支持Copilot代理、Copilot扩展等多项功能

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

数据通信基本概念汇总

1. 数据通信基础 网关: 提供协议转换&#xff0c;路由选择&#xff0c;数据交换的网络设备 报文: 网络中所传递的一个数据单元。 数据载荷: 最终要传递的信息 封装: 给数据载荷添加头部和尾部的过程(形成新的报文) 解封装: 给数据载荷去掉头部和尾部的过程(获取数据载荷) 终端设…...

AcWing 835. Trie字符串统计——算法基础课题解

AcWing 835. Trie 字符串统计 题目描述 维护一个字符串集合&#xff0c;支持两种操作&#xff1a; I x 向集合中插入一个字符串 &#x1d465;&#xff1b;Q x 询问一个字符串在集合中出现了多少次。 共有 &#x1d441; 个操作&#xff0c;所有输入的字符串总长度不超过 1…...

RT-DETR算法改进【NO.1】借鉴CVPR2024中的StarNet网络StarBlock改进算法

前 言 YOLO算法改进的路有点拥挤,尝试选择其他的baseline作为算法研究,可能会更加好发一些文章。后面将陆续介绍RT-DETR算法改进的方法思路。 很多朋友问改进如何选择是最佳的,下面我就根据个人多年的写作发文章以及指导发文章的经验来看,按照优先顺序进行排序讲解…...

5,串口编程---实现简单的用串口发送接收数据

单片机通过串口向PC机发送数据 PC机通过串口接收单片机发过来的数据 1.UART和USART的区别&#xff1a; USART支持同步通信方式,可以通过外部时钟信号进行同步传输,而UART仅支持异步通信方式 本开发板STM32F103ZET6有5个串口&#xff0c;用串口1作调试串口&#xff0c;因为串…...

LeetCode583:两个字符串的删除操作

题目描述 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 代码 解法1 /*dp[i][j]&#xff1a;以i-1为结尾的wrod1中有以j-1为尾的word2的个数为了让word1和word2相同&#xff0c;最少操作…...

LLama学习记录

学习前&#xff1a; 五大问题&#xff1a; 为什么SwiGLU激活函数能够提升模型性能&#xff1f;RoPE位置编码是什么&#xff1f;怎么用的&#xff1f;还有哪些位置编码方式&#xff1f;GQA&#xff08;Grouped-Query Attention, GQA&#xff09;分组查询注意力机制是什么&…...

如何克隆非默认分支

直接git clone下来的我们知道是默认分支&#xff0c;那如何克隆其他分支呢&#xff1a; 比如这个&#xff0c;我们想克隆AdvNet。 我们可以在本地文件夹打开Git Bash 依次输入&#xff1a; git clone --branch AdvNet https://github.com/wgcban/SemiCD.git cd SemiCD git b…...

数据结构——图

一 图论基本概念 Directed Acyclic Graph &#xff08;DAG&#xff09; 二 图的存储 ①邻接矩阵(适用于稠密图) ②邻接表(适用于稀疏图) 三、图的遍历 ①深度优先搜索 //(基于邻接表实现&#xff0c;以有向图为例) //DFS:Depth First Search 深度优先搜索 //1、访问起始顶点 …...

蓝桥杯—SysTick中断精准定时实现闪烁灯

在嵌入式系统中&#xff0c;SysTick_Handler 是一个中断服务例程&#xff08;Interrupt Service Routine, ISR&#xff09;&#xff0c;用于处理 SysTick 定时器的中断。SysTick 定时器通常用于提供一个周期性的定时中断&#xff0c;可以用来实现延时或者周期性任务。 SysTick…...

ML307R OpenCPU UDP使用

一、UDP通信流程 二、示例 三、UDP通信代码 一、UDP通信流程 ML307R UDP 是使用LWIP的标准的通信,具体UDP流程可以自行百度 二、示例 实验目的:实现把接收的数据再发送到服务端 测试网址:UDP电脑端测试网址 因为是4G,所以必须用外网的 /* 测试前请先补充如下参数 */…...

pod详解

目录 pod pod基本介绍 k8s集群中pod两种使用方式 pause容器使得Pod中所有容器共享两种资源&#xff1a;网络和存储 kubernetes中的pause容器主要为每个容器提供以下功能 k8s设计这样的pod概念和特殊组成结构有什么用意 pod分类 pod容器的分类 基础容器&#xff08;infr…...

免费插件集-illustrator插件-Ai插件-文本对象分行

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件&#xff0c;加强illustrator使用人员工作效率&#xff0c;进行文本对象分行。首先从下载网址下载这款插件 https://download.csdn.net/download/m0_67316550/87890501&…...

web学习笔记(五十九)

目录 1.style样式 1.1作用域 scoped 1.2 less和 sass 1.3 less和 sass两者的区别 2. 计算属性computed 3. 响应式基础reactive() 4. 什么是MVVM? 1.style样式 1.1作用域 scoped scoped表示样式作用域&#xff0c;把内部的样式仅限于当前组件模板生效&#xff0c;其…...

dmview.ocx文件丢失找不到 打不开程序 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…...

雯雯的后宫-造相Z-Image-瑜伽女孩实战教程:结合ControlNet实现精准体式控制

雯雯的后宫-造相Z-Image-瑜伽女孩实战教程&#xff1a;结合ControlNet实现精准体式控制 1. 从零开始&#xff1a;环境准备与模型部署 想要生成专业的瑜伽女孩图片&#xff0c;首先需要搭建好环境。雯雯的后宫-造相Z-Image-瑜伽女孩是一个专门针对瑜伽场景优化的文生图模型&am…...

CST中利用SPICE语言自定义复杂lumped element电路的实战指南

1. 突破CST自带元件的限制&#xff1a;为什么需要SPICE语言 刚开始用CST做电路仿真时&#xff0c;我也觉得自带的RLC元件够用了——直到遇到一个带滤波功能的耦合器项目。当时需要模拟一个包含寄生参数的复杂匹配网络&#xff0c;自带的并联RLC元件死活调不出理想的频响曲线。这…...

dll修复工具绿色版免安装,2026年最新版实测与风险提示

正急着用电脑&#xff0c;突然弹窗“缺少dll文件”&#xff0c;游戏或软件打不开。第一反应就是赶紧找个工具修好它&#xff0c;但又不想在电脑上装一堆乱七八糟的软件&#xff0c;就想找个绿色版、免安装的&#xff0c;用完就能删&#xff0c;不留痕迹。但网上这种小工具满天飞…...

自编码器在异常检测中的实战应用:以金融交易数据为例

自编码器在金融异常检测中的实战指南&#xff1a;从数据清洗到模型部署 金融交易数据中的异常行为检测一直是风险控制的核心环节。传统基于规则的系统难以应对日益复杂的欺诈模式&#xff0c;而自编码器这类无监督学习模型正在改变游戏规则。本文将带您从零构建一个完整的异常检…...

别再让C盘爆红了!Windows 11上Ollama安装与模型存储路径修改保姆级教程

Windows 11上Ollama安装避坑指南&#xff1a;彻底解决C盘空间焦虑 每次看到C盘飘红&#xff0c;就像看到手机电量只剩5%一样让人焦虑。特别是当你兴冲冲地安装Ollama准备体验本地大模型时&#xff0c;却发现默认安装路径无情地吞噬着宝贵的C盘空间。本文将带你从零开始&#xf…...

Emby Premiere完全免费解锁终极教程:简单三步享受高级媒体服务器功能

Emby Premiere完全免费解锁终极教程&#xff1a;简单三步享受高级媒体服务器功能 【免费下载链接】emby-unlocked Emby with the premium Emby Premiere features unlocked. 项目地址: https://gitcode.com/gh_mirrors/em/emby-unlocked 你是否曾经为Emby Premiere的高级…...

如何突破原神60帧限制?genshin-fps-unlock带来的视觉体验升级

如何突破原神60帧限制&#xff1f;genshin-fps-unlock带来的视觉体验升级 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 3大核心收益&#xff1a;更高帧率、更流畅操作、零风险体验 问…...

3个超实用方法:115proxy-for-Kodi插件实现云端视频流畅播放完全指南

3个超实用方法&#xff1a;115proxy-for-Kodi插件实现云端视频流畅播放完全指南 【免费下载链接】115proxy-for-kodi 115原码播放服务Kodi插件 项目地址: https://gitcode.com/gh_mirrors/11/115proxy-for-kodi 你是否曾因115网盘中的高清视频无法在Kodi上流畅播放而困扰…...

OpenClaw隐私增强:nanobot本地模型处理敏感财务数据

OpenClaw隐私增强&#xff1a;nanobot本地模型处理敏感财务数据 1. 为什么选择本地模型处理财务数据 去年我在帮朋友的小公司整理年度财报时&#xff0c;遇到了一个棘手的问题&#xff1a;他们使用的在线财务分析工具要求上传完整的Excel报表到云端服务器。虽然服务商承诺数据…...