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

网站建设mfdos 优帮云百度指数功能

网站建设mfdos 优帮云,百度指数功能,做个支付网站多少钱,广州 环保 凡人网站建设你这段代码实现的是一个经典的算法:快速选择(QuickSelect)算法,用于在未排序的数组中查找第 k 大的元素。整体思路和快速排序类似,但只处理一部分数组,从而提高效率。下面我会给出详细思路、每一步运行过程…

你这段代码实现的是一个经典的算法:快速选择(QuickSelect)算法,用于在未排序的数组中查找第 k 大的元素。整体思路和快速排序类似,但只处理一部分数组,从而提高效率。下面我会给出详细思路、每一步运行过程和举例说明

class Solution {
public:int findKthLargest(vector<int>& nums, int k) {return quickSelect(nums, k);}int quickSelect(vector<int>& nums, int k) {// 基于快排的快速选择// 随机选择基准数字int p = nums[rand() % nums.size()];// 将大于等于小于的元素分别放入三个数组vector<int> big, equal, small;for (int a : nums) {if (a < p) small.push_back(a);else if (a == p) equal.push_back(a);else big.push_back(a);}// 第k大元素在big中, 递归划分if (k <= big.size()) {return quickSelect(big, k);}// 第k大元素在small中, 递归划分if (big.size() + equal.size() < k) {return quickSelect(small, k - (big.size() + equal.size()));}// 第k大元素在equal中, 返回preturn p;}
};

✅ 一、问题定义

给定一个整数数组 nums 和一个整数 k,你要找出数组中第 k 大的元素。

注意: 第 k ,意味着比它大的元素有 (k - 1) 个。


✅ 二、算法核心思想(QuickSelect)

快速选择基于快速排序中的“分区”思想:

1. 每次随机选择一个基准数 pivot

2. 把原数组划分成三部分:

• big: 所有比 pivot 大的

• equal: 所有等于 pivot 的

• small: 所有比 pivot 小的

3. 判断第 k 大在哪一组中:

• 如果 k <= big.size():说明第 k 大在 big 里 → 递归查找

• 如果 k > big.size() + equal.size():说明第 k 大在 small 里 → 递归查找,并更新 k

• 否则,第 k 大就在 equal 中,直接返回 pivot


✅ 三、代码详解

🔹 函数接口:

int findKthLargest(vector<int>& nums, int k)

• 主函数,调用快速选择来找第 k 大元素。


🔹 快速选择函数:

int quickSelect(vector<int>& nums, int k)

1. 随机选一个基准数

int p = nums[rand() % nums.size()];

• 用随机下标选一个 pivot,防止最坏时间复杂度。


2. 三分法分区

vector<int> big, equal, small;
for (int a : nums) {if (a < p) small.push_back(a);else if (a == p) equal.push_back(a);else big.push_back(a);
}

• 按照 pivot 分为三部分:

• big:大于 pivot 的数

• equal:等于 pivot 的数

• small:小于 pivot 的数


3. 判断第 k 大在哪一部分

if (k <= big.size()) {return quickSelect(big, k);
}
if (big.size() + equal.size() < k) {return quickSelect(small, k - (big.size() + equal.size()));
}
return p;


🧪 四、举个例子

输入:

nums = [3, 2, 1, 5, 6, 4], k = 2

目的是找 第 2 大元素


第一次递归:

• 假设随机选到 pivot = 4

• 划分结果:

• big = [5, 6]

• equal = [4]

• small = [3, 2, 1]

• 因为 k = 2 且 big.size() = 2,所以第 2 大在 big 中

• → 递归查找 quickSelect([5,6], 2)


第二次递归:

• 假设 pivot = 5

• 划分结果:

• big = [6]

• equal = [5]

• small = []

• big.size() = 1,equal.size() = 1,所以:

• k = 2,在 big + equal 范围内

• → 返回 pivot = 5

最终结果为 5,即第 2 大的数。


当然可以,我们用一个新的数据来手动运行你的这段代码,演示一下每一步的执行过程。


✅ 新示例输入:

nums = [7, 10, 4, 3, 20, 15]
k = 3

我们要找的是第 3 大元素


🔄 第一次调用:quickSelect([7, 10, 4, 3, 20, 15], 3)

假设随机选的 pivot = 10

我们开始分组:

• big: [20, 15](比 10 大的)

• equal: [10]

• small: [7, 4, 3](比 10 小的)

看 k = 3 落在哪一段:

• big.size() = 2

• equal.size() = 1

• big + equal = 3,刚好第 3 大就在前两部分!

因为 k <= big.size() + equal.size() 且 k > big.size(),说明第 3 大在 equal 中。

✅ 返回:pivot = 10


🎉 最终结果:

第 3 大元素 = 10


✅ 每一步小结

步骤

内容

原数组

[7, 10, 4, 3, 20, 15]

pivot

10

分组

big = [20, 15], equal = [10], small = [7, 4, 3]

目标位置

第 3 大,正好在 equal 中

结果

返回 10



文章转载自:

http://ao9ua1YF.pjqxk.cn
http://vM9DPFE1.pjqxk.cn
http://PRHV5mOV.pjqxk.cn
http://2Tr8J8dV.pjqxk.cn
http://nz0U9SXJ.pjqxk.cn
http://emNYyxgR.pjqxk.cn
http://zbvl04Vk.pjqxk.cn
http://qGNPF8S0.pjqxk.cn
http://MxOE5zmk.pjqxk.cn
http://52I5TMY0.pjqxk.cn
http://ajS3Mu81.pjqxk.cn
http://9ISnaLH9.pjqxk.cn
http://iF0NtpLL.pjqxk.cn
http://1BSPza6O.pjqxk.cn
http://Zz3ZL0hT.pjqxk.cn
http://ByJfC7TH.pjqxk.cn
http://7SRXC56A.pjqxk.cn
http://gAwAyyGc.pjqxk.cn
http://uxMcJYbG.pjqxk.cn
http://Gu3LkWHI.pjqxk.cn
http://1t83kC2I.pjqxk.cn
http://U4cUM69X.pjqxk.cn
http://MmM4nhvE.pjqxk.cn
http://976t3mL4.pjqxk.cn
http://OldK03Rx.pjqxk.cn
http://sIVjOsnk.pjqxk.cn
http://JOon7KRF.pjqxk.cn
http://c6xmMCJg.pjqxk.cn
http://FGRFaeSi.pjqxk.cn
http://qgjYbqJG.pjqxk.cn
http://www.dtcms.com/wzjs/671224.html

相关文章:

  • 网站维护页面模板深圳品牌折扣店
  • 百度静态网站西安有什么好玩的地方景点推荐
  • php网站开发代码网站设计与制作是什么专业
  • flashxml网站模板宣城做网站
  • 网站代码规范性电商网站设计公司排名
  • 福建定制网站开发网站外链有多重要
  • 一个ip 做2个网站吗长沙旅游攻略必去的十大景点
  • 微网站 pc端网站开发网站备案找回密码
  • 网站建设维护培训wordpress淘宝优惠券
  • 无锡网站建设企业wordpress 电子商城 模板
  • 深圳网站设计 建设首选深圳市wordpress快讯
  • 网站平台建设策划做竞价托管的公司
  • 湖北葛洲坝建设工程网站七个php源码下载的网站
  • 仿站怎么做员工培训
  • 山西公司怎么做网站wordpress sql文章
  • 天猫网站网址杭州租车网站建设
  • 成都建立公司网站seo排名优化
  • 长春建站模板搭建杭州餐饮团购网站建设
  • 新余市网站建设哪个网站推广比较好
  • 微信小程序网站制作肇庆百度快速排名
  • seo在线网站推广实验教学中心网站建设
  • wordpress 网址 建站营销型网站维护多少钱
  • 接单子做网站怎么设置网站名称
  • 阿里云服务器建设两个网站磁县网站设计公司
  • 山东省建设监理协会网站打不开新产品线上推广方案
  • 网站 服务 套餐国内搜索引擎大全
  • 苏州婚庆公司网站建设案例西安公司网站费用
  • 建设招标网 手机官方网站网站建设推广ppt模板
  • 好用的网站链接3d建模软件手机版下载
  • 建设一个公司网站需要多少钱银川网站建设公司哪家好