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

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

文章目录

  • 题目介绍
  • 题解

题目介绍

在这里插入图片描述

题解

法一:基于快速排序的选择方法

以中间元素pivot为基准进行排序后,右指针 r 的位置就是最终全部排序好后pivot的位置,然后去左边或右边递归寻找第k个位置(答案)的元素。

代码如下:

class Solution {public int findKthLargest(int[] nums, int k) {int n = nums.length;return quickselect(nums, 0, n - 1, n - k);}// 返回最终排序后数组第k个位置的元素public int quickselect(int[] nums, int left, int right, int k) {if (left == right) { // 区间只剩一个元素,直接返回  >=也可以return nums[k];}int mid = left + (right - left) / 2;int pivot = nums[mid];int l = left, r = right;while (l <= r) {!!!不能用<=,是为了防止中轴值(pivot)被多次交换while (nums[l] < pivot)l++; while (nums[r] > pivot)r--; if (l <= r) {swap(nums, l, r); l++;r--;}}// 递归处理左半部分或右半部分if (k <= r) {return quickselect(nums, left, r, k); // 目标在左半部分} else {return quickselect(nums, l, right, k); // 目标在右半部分}}public void swap(int[] nums, int i, int j) {int tmp = nums[i];nums[i] = nums[j];nums[j] = tmp;}
}

相关文章:

  • AMBA-AHB总线是怎么不依赖三态总线的?
  • 11.14 LangGraph检查点系统实战:AI Agent会话恢复率提升287%的企业级方案
  • 【网络编程】十八、Reactor模式
  • 2025年05月28日Github流行趋势
  • 农业光合参数反演专栏
  • kubernate解决 “cni0“ already has an IP address different from 10.244.0.1/24问题
  • Caddy如何在测试环境中使用IP地址配置HTTPS服务
  • bug: uniCloud 查询数组字段失败
  • HTTP Accept简介
  • linux系统(centos7为例)将jar配置成服务操作教程
  • 浏览器之禁止打开控制台【F12】
  • 网页前端开发(基础进阶1)
  • Transformer核心技术解析LCPO方法:精准控制推理长度的新突破
  • 计算机内存管理全解析:从基础原理到前沿技术(含分页/分段/置换算法/大页/NVM/CXL等技术详解
  • LVS的DR模式部署
  • Linux文件权限相关
  • Oracle基础知识(五)——ROWID ROWNUM
  • 8.8 Primary ODSA service without ODSA Portal
  • 基于亚博K210开发板——物体分类测试
  • 企业信息化/数字化项目管理办法V3.0
  • 做网站的的需求文档/百度知道提问
  • 某学校网站建设方案/网络推广是做什么工作
  • 有实力的网站建设推广/百度如何免费打广告
  • 衡阳市住房和城乡建设局官方网站/微营销软件
  • php 怎么做 网站吗/图片优化软件
  • 网站建设交易/西安专业网络推广平台