力扣hot100 数组中的第K个最大元素 堆 三路划分

Problem: 215. 数组中的第K个最大元素
在这里插入图片描述

文章目录

  • 思路
  • 复杂度
  • Code

思路

👨‍🏫 参考
在这里插入图片描述

复杂度

时间复杂度: O ( n ) O(n) O(n)

空间复杂度: O ( log ⁡ n ) O(\log{n}) O(logn)

Code

class Solution {public int findKthLargest(int[] nums, int k){List<Integer> list = new ArrayList<>();for (int x : nums)list.add(x);return quickSelect(list, k);}private int quickSelect(List<Integer> nums, int k){Random rand = new Random();int pivot = nums.get(rand.nextInt(nums.size()));List<Integer> big = new ArrayList<>();List<Integer> equal = new ArrayList<>();List<Integer> small = new ArrayList<>();for (int x : nums){if (x < pivot)small.add(x);else if (x == pivot)equal.add(x);elsebig.add(x);}if (k <= big.size())// 第 k 大在 big中return quickSelect(big, k);else if (big.size() + equal.size() < k)// 第 k 大在 small中return quickSelect(small, k - big.size() - equal.size());return pivot;// 当前选到的值就是第 k 大}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659589.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5种改进生产 Web 应用服务器设置的方法

简介 一旦你的应用程序在云服务器环境中运行起来&#xff0c;你可能会想知道如何改进你的服务器环境&#xff0c;使其从“能用”跃升到一个完整的生产环境。本文将帮助你开始规划和实施生产环境&#xff0c;通过在云服务器环境中创建一个“生产环境”的宽泛定义&#xff0c;并…

Java:搭建eladmin复习mvn、springboot、vue等

目录 1.源码平台后端&#xff1a; 2.源码平台前端&#xff1a; 3.操作系统&#xff1a;centos7.9 4.mysql:5.7.x 安装 5.redis:5.0.X 6.maven&#xff1a;3.8 7.java:1.8&#xff1a; 8.nodejs:16.x 9.通过mvn打包eladmin后端 10.npm打包前端项目进行部署 11.访问测试…

电子文件归档管理有哪些方法

电子文件归档管理有以下几种方法&#xff1a; 1. 按文件类型归档&#xff1a;将电子文件根据文件类型进行归档管理&#xff0c;如将所有的文档文件放在一个文件夹中&#xff0c;所有的图像文件放在另一个文件夹中&#xff0c;便于管理和查找。 2. 按时间归档&#xff1a;将电子…

力扣经典题目:循环队列

1.虽然是循环队列&#xff0c;但需要提供一个队列为满的情况&#xff0c;所以&#xff0c;要设立一个空的队列元素&#xff0c;当最后一个元素的next指针加一等于第一个元素的时候为满 2.可以增加一个size记录元素个数&#xff0c;当size为0的时候为空&#xff0c;当size为目标…

操作股票的强化学习实现

实现一个操作股票的强化学习模型需要几个关键步骤。以下是一个基本的实现流程&#xff1a; 1. 环境设定 首先&#xff0c;我们需要定义一个环境&#xff0c;该环境会模拟股票市场的动态。环境需要至少提供以下功能&#xff1a; 重置&#xff08;Reset&#xff09;&#xff1…

晶相光电 JX-A05 车规级 200万 像素图像传感器

晶相光电推出的 JX-A05 是一款 1/2.7英寸、3.0m、90fps12bit 的车规级 200万 像素图像传感器。JX-A05 拥有三段曝光 HDR 30fps 技术&#xff0c;实现高达 120dB 的高动态范围。汽车在夜间行驶复杂多变恶劣的光线环境下&#xff0c;JX-A05 拥有优异的夜视全彩成像性能。JX-A05 具…

【HTML 基础】表单标签

文章目录 1. <form>2. <input>3. <select> 和 <option>4. <textarea>5. <button>结语 HTML 表单是互联网上交互性最强的元素之一&#xff0c;它允许用户输入、选择和提交数据。在这篇博客中&#xff0c;我们将介绍 HTML 中一些关键的表单标…

如何写论文——(8)用故事逻辑写文献综述

文献综述一般出现在论文的引言部分&#xff0c;用来支撑自己研究目标的合理性 一、情景Situation 挑出文献中最不具有争议&#xff0c;读者最容易认同的部分来入手 二、冲突Conflication 起伏的开始&#xff0c;是一个显然的挑战或者一个通过分析文献才能发现的潜在的危险或…

brpc之单例

简介 GetLeakySingleton是单例模板类,线程安全的 GetLeakySingleton template <typename T> class GetLeakySingleton { public:static butil::subtle::AtomicWord g_leaky_singleton_untyped;static pthread_once_t g_create_leaky_singleton_once;static void creat…

【AI_Design】Midjourney技巧进阶

目录 参考链接 参考链接 [Midjourney]垫图的5种进阶技巧&#xff0c;让你的生图更精准

MySQL必看表设计经验汇总-下(精华版)

本内容一共分上下两篇 上&#xff1a;MySQL必看表设计经验汇总-上(精华版)-CSDN博客 下&#xff1a;MySQL必看表设计经验汇总-下(精华版)-CSDN博客 目录 7.定义字段尽可能not null 8.合理添加索引 9.不需要严格遵守3NF&#xff0c;通过业务字段冗余来减少表关联 11.避免使用…

使用VScode远程连接Ubuntu

君衍. 一、环境准备二、配置VScode三、远程连接Ubuntu 平常远程连接服务器的工具有很多&#xff0c;比如Moba、Xshell、putty、甚至CRT都可以进行远程连接服务器&#xff0c;但是他们的本质是相同的&#xff0c;都是使用ssh来进行远程连接。 这里我们之所以要使用VScode远程连接…

Hadoop-MapReduce-源码跟读-ReduceTask阶段篇

一、源码下载 下面是hadoop官方源码下载地址&#xff0c;我下载的是hadoop-3.2.4&#xff0c;那就一起来看下吧 Index of /dist/hadoop/core 二、Reducer类 我们先看下我们写的reduce所继承的Reducer类 public class Reducer<KEYIN,VALUEIN,KEYOUT,VALUEOUT> {/*** 传…

Spring Boot 中操作 Bean 的生命周期

1.InitializingBean和DisposableBean InitializingBean接口提供了afterPropertiesSet方法&#xff0c;用于在bean的属性设置好之后调用&#xff1b; DisposableBean接口提供了destroy方法&#xff0c;用于在bean销毁之后调用&#xff1b; public class TestComponent implem…

C语言-算法-搜索剪枝与记忆化搜索

Function 题目描述 对于一个递归函数 w ( a , b , c ) w(a,b,c) w(a,b,c) 如果 a ≤ 0 a \le 0 a≤0 或 b ≤ 0 b \le 0 b≤0 或 c ≤ 0 c \le 0 c≤0 就返回值$ 1$。如果 a > 20 a>20 a>20 或 b > 20 b>20 b>20 或 c > 20 c>20 c>20 就返…

用 CanvasKit 实现超级丝滑的原神地图(已开源)!!!

首先给大家送上预览地址&#xff1a; 官网地址&#xff1a;https://webstatic.mihoyo.com/ys/app/interactive-map/index.html canvaskit地址&#xff1a;http://106.55.55.247/ky-genshin-map/ 为什么 canvaskit 有如此高的性能&#xff1f; 第一个问题&#xff0c;官方网页…

算法训练营day19,二叉树8-2

type TreeNode struct { Val int Left *TreeNode Right *TreeNode } 450. 删除二叉搜索树中的节点 /*本题比较难&#xff0c;删除节点要分五种情况考虑 1.没有找到要删除的节点 2.找到要删除的节点是叶子节点 3.找到要删除的节点&#xff0c;左指针不为空&#xff0c;…

[嵌入式系统-7]:龙芯1B 开发学习套件 -4- LoongIDE 集成开发工具的使用-创建应用程序工程、编译、下载、调试

目录 前言&#xff1a; 步骤1&#xff1a;设置工作工作空间 步骤2&#xff1a;设置工具链 步骤3&#xff1a;创建裸机应用程序 步骤4&#xff1a;创建带实时操作系统的应用程序 步骤5&#xff1a;编译 步骤6&#xff1a;下载调试 前言&#xff1a; LoongIDE集成开发环境…

使用 axios 请求库,设置请求拦截

什么是 axios&#xff1f; 基于promise网络请求库&#xff0c;可以同构&#xff08;同一套代码可以运行在浏览器&#xff09;&#xff0c;在服务端&#xff0c;使用原生node.js的http模块&#xff0c;在客户端&#xff08;浏览器&#xff09;中&#xff0c;使用XMLHttpRequests…

什么是适配器模式?它的实现方式有哪些?

什么是适配器模式&#xff1f;它的实现方式有哪些&#xff1f; 适配器模式是一种结构型设计模式&#xff0c;用于将一个类的接口转换成客户端所期望的另一个接口&#xff0c;以解决由于接口不兼容而不能协同工作的问题。适配器模式可以使原本由于接口不兼容而不能一起工作的类…