算法通关村第十关-白银挑战数组最大K数

大家好我是苏麟 , 今天带来一道应用快排的题 .

数组中的第K个最大元素 

描述 :

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。

请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

题目 :

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

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

分析 :

这道题基于快排完成 , 快排教程 :

算法通关村第十关-青铜挑战快速排序-CSDN博客

这道题还有一个地方就是K这 , 举例 :数组 num =  [1,2,3,4,5,6,7,8,9] 一个升序的数组 找第1个大的值就是 9 ,就找 9 的下标 也就是 num.length - k , 懂了这里我们看一下下面的代码 :

        if(i < k){return sort(nums,i + 1,right,k);}else{return sort(nums,left,i - 1,k);}

 i 这里就是中间值 , 在 i 左边的都比 num[i] 小 , 在 i 右边的都比num[i] 大 , 所以要找第一大的就在 i 右边找就好了 , 因为左边都是比num[i] 小的 ......  这里也懂了的话就题就完事了 , 这题还是有些难度的 .

用双边快排

解析 :

class Solution {public int findKthLargest(int[] nums,int k) {int length = nums.length;return sort(nums,0,length - 1,length - k);}public int sort(int[] nums,int left,int right,int k){int i =  qicke(nums,left,right);if(i == k){return nums[k];}if(i < k){return sort(nums,i + 1 , right ,k);}else{return sort(nums,left,i - 1,k);}// sort(nums,left,i - 1,k);// sort(nums,i + 1,right,k);}public int qicke(int[] nums,int left,int right){int i = left;int j = right;int p = nums[left];while(i < j){while(i < j && nums[j] > p){j--;}while(i < j && nums[i] <= p){i++;}swap(nums,i,j);}swap(nums,i,left);return i;   }public void swap(int[]nums,int i,int j){int temp = nums[i];nums[i]=nums[j];nums[j]=temp;}
}

分析 :

用单边快排

解析 :

class Solution {public int findKthLargest(int[] nums, int k) {int n = nums.length;return sort(nums,0,n - 1,n - k);}public int sort(int[] nums,int left,int right,int k){int i = qicke(nums,left,right,k);if(i == k){return nums[k];}if(i < k){return sort(nums,i + 1,right,k);}else{return sort(nums,left,i - 1,k);}}public int qicke(int[] nums,int left,int right,int k){int i = left;int j = left;int p = nums[right];while(j < right){if(nums[j] < p){if(i != j){swap(nums,i,j);}i++;}j++;}swap(nums,i,right);return i;   }public void swap(int[]nums,int i,int j){int temp = nums[i];nums[i]=nums[j];nums[j]=temp;}
}

这题需要大家好好理解 , 并独立写出来 . 

这道题 , 我也是弄了很久 ,下面是我的提交记录(太惨了) , 希望大家做的又快又对 ......

这期就到这里 , 下期见!

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

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

相关文章

《卡拉马佐夫兄弟》人物表

《卡拉马佐夫兄弟》人物表 重要人物表 费奥多尔巴甫洛维奇卡拉马佐夫——地主。费多尔巴甫洛维奇 德米特里&#xff08;米特里、米嘉、米剑卡&#xff09;费奥多罗维奇卡拉马佐夫——长子。 伊万费奥多罗维奇卡拉马佐夫——次子。伊凡费多罗维奇&#xff0c;。 阿列克塞&#…

ts学习02-数据类型

新建index.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </h…

【P1008 [NOIP1998 普及组] 三连击】

[NOIP1998 普及组] 三连击 题目背景 本题为提交答案题&#xff0c;您可以写程序或手算在本机上算出答案后&#xff0c;直接提交答案文本&#xff0c;也可提交答案生成程序。 题目描述 将 1 , 2 , … , 9 1, 2, \ldots , 9 1,2,…,9 共 9 9 9 个数分成 3 3 3 组&#xff…

OpenCV快速入门:绘制图形、图像金字塔和感兴趣区域

文章目录 前言一、绘制图形1. 绘制直线2. 绘制圆3. 绘制矩形4. 绘制椭圆5. 绘制多边形6. 绘制文字7. 可选参数8. 手工绘制OpenCV的logo 二、图像金字塔1. 高斯金字塔2. 拉普拉斯金字塔 三、感兴趣区域&#xff08;ROI&#xff09;数组切片方式OpenCV截取方式 总结 前言 OpenCV…

Docker与Kubernetes结合的难题与技术解决方案

文章目录 1. **版本兼容性**技术解决方案 2. **网络通信**技术解决方案 3. **存储卷的管理**技术解决方案 4. **安全性**技术解决方案 5. **监控和日志**技术解决方案 6. **扩展性与自动化**技术解决方案 7. **多集群管理**技术解决方案 结语 &#x1f388;个人主页&#xff1a…

Swagger(3):Swagger入门案例

1 编写SpringBoot项目 新建一个Rest请求控制器。 package com.example.demo.controller;import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.Reques…

C++20并发编程之线程闩(std::latch)和线程卡(std::barrier)

std::latch std::latch类是一种基于std::ptrdiff_t类型的倒计数器&#xff0c;可用于同步线程。计数器的值在创建时进行初始化。线程可以在 latch 上阻塞&#xff0c;直到计数器减少到零为止。无法增加或重置计数器&#xff0c;这使得 latch 成为一次性的屏障。 std::latch的成…

JS原型对象prototype

让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…

2023NOIP游寄

停课停了一个月&#xff0c;考炸了就真的寄了。 DAY -2 模拟赛出人意外的简单&#xff0c;信心赛吗&#xff1f; 开局30s切了T1。总共做出三题&#xff0c;但挂了 150pts。难绷。 直接没有信心了。 DAY -1 晚上直接跑路回家&#xff0c;表示&#xff1a;休息一天。 DAY …

深度学习(五)softmax 回归之:分类算法介绍,如何加载 Fashion-MINIST 数据集

Softmax 回归 基本原理 回归和分类&#xff0c;是两种深度学习常用方法。回归是对连续的预测&#xff08;比如我预测根据过去开奖列表下次双色球号&#xff09;&#xff0c;分类是预测离散的类别&#xff08;手写语音识别&#xff0c;图片识别&#xff09;。 现在我们已经对回…

3DEXPERIENCE许可合规性:确保企业设计流程的合法与安全

在当今复杂多变的设计领域&#xff0c;企业需要格外关注设计流程的合规性。3DEXPERIENCE作为一款全球领先的设计软件&#xff0c;其许可合规性是确保企业设计流程合法与安全的重要保障。本文将详细介绍3DEXPERIENCE在许可合规性方面的优势和实践&#xff0c;帮助您更好地了解和…

Java多线程下使用TransactionTemplate控制事务

简介 本文展示了在Java的多线程环境下使用Spring的TransactionTemplate控制事务的提交与回滚&#xff0c;当任何一个子线程出现异常时&#xff0c;所有子线程都将回滚 环境 JDK&#xff1a;1.8.0_211 SpringBoot&#xff1a;2.5.10 说明 本文通过同时写入用户(User)和用户详细…

zookeperkafka学习

1、why kafka 优点 缺点kafka 吞吐量高&#xff0c;对批处理和异步处理做了大量的设计&#xff0c;因此Kafka可以得到非常高的性能。延迟也会高&#xff0c;不适合电商场景。RabbitMQ 如果有大量消息堆积在队列中&#xff0c;性能会急剧下降每秒处理几万到几十万的消息。如果…

记录一些涉及到界的题

文章目录 coppersmith的一些相关知识题1 [N1CTF 2023] e2Wrmup题2 [ACTF 2023] midRSA题3 [qsnctf 2023]浅记一下 coppersmith的一些相关知识 上界 X c e i l ( 1 2 ∗ N β 2 d − ϵ ) X ceil(\frac{1}{2} * N^{\frac{\beta^2}{d} - \epsilon}) Xceil(21​∗Ndβ2​−ϵ) …

elementPlus+vue3引入icon图标

安装包管理&#xff0c;推荐使用 yarn npm包有时候会有包冲突&#xff0c;在项目的根目录下执行&#xff0c;在终端下 # Yarn $ yarn add element-plus/icons-vue在main.js或main.ts中进行全局注册&#xff0c;导入所有图标 import * as ElementPlusIconsVue from element-plu…

【Proteus仿真】【STM32单片机】防火防盗GSM智能家居设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用声光报警模块、LCD1602显示模块、DS18B20温度、烟雾传感器模块、按键模块、PCF8591 ADC模块、红外检测模块等。 主要功能&#xff1a; 系统运行…

Leetcode_49:字母异位词分组

题目描述&#xff1a; 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 就是将相同字母组合的单词放在一起 示例 1: 输入: strs ["eat", "tea&qu…

Mac电脑好用的窗口管理软件 Magnet 中文for mac

Magnet是一款用于Mac操作系统的窗口管理工具&#xff0c;它可以帮助您快速和方便地组织和管理应用程序窗口&#xff0c;以提高您的工作效率和多任务处理能力。 以下是Magnet的一些主要功能和特点&#xff1a; 窗口自动调整&#xff1a;Magnet允许您通过简单的拖放操作或使用快…

使用Golang调用摄像头

近年来&#xff0c;摄像头成为了我们生活中不可或缺的设备之一。从智能手机到安全监控系统&#xff0c;无处不在的摄像头给我们带来了便利和安全。在开发摄像头相关的应用程序时&#xff0c;选择一种高效和易用的编程语言是非常重要的。本文将介绍如何使用Golang调用摄像头并进…

同态加密定义,四大发展阶段总结,FHE系统正式定义-全同态加密

目录 同态加密定义 为什么采用电路模型? 四大发展阶段 总结 FHE系统正式定义