一、笔记部分:

方法:

排序取下标

快排要点:

1.i,j,指左,指右,一起往中间走,直到相等,其中可能会交换几次,碰见就要与key交换,所以移动的时候也要加i<j,走不动一次就要交换一次,所以后面有一个if(i<j),因为i==j后就跳出循环与左值交换

2.j一定要先走,因为这样采用先指向小于Key的值,如果i先走先指向大于Key的值,然后j走过来后相等,交换,结果把大值交换到最左边了。

寻找第k个一般只用提取一半,看这个值与i,j重合哪个值哪个大哪个小。

必须要加return 否则进入else if后无法有返回值,会报错

方法2优先队列方法(包含堆排序方法):是利用堆实现的,插入和删除都是堆实现(logN)。

push方法是O(N):选前几就开多少长度的数组,数组比较非常常用,但是用堆排序(一个节点的)就是更小的时间复杂度(logN),重建最大堆是(N*logN)

K是2,开一个k=2的数组,遍历数组与新开数组的最小值进行比较比较,如果大于,次数与最小值交换,直到数组遍历完,再将新建数组的最小值提取出来。就是第k大的数

方法三最大堆(平衡二叉树):3ms比选择派少了9ms。

O(NlogN)空间复杂度O(K)

队列实现二叉树。

注意点:

1.最大堆的实现,从有子树的节点开始(size/2)开始与子树比较,将最大值放到父节点,然后依  次往上遍历,直到堆顶,堆顶就是最大值。

2.实现数组的交换,一定要传入数组进去,这样才是地址交换,才有质的变换,所以数组元素的交换肯定会有三个数。

3.调换了顶部的元素,最大值只能从其子树选,所以直接用maxHeap,不需要重新建树。

二、排序类型的高频面试题汇总:

https://blog.csdn.net/qq_40262372/article/details/112643107

三、各种类型的高频面试题汇总:

https://blog.csdn.net/qq_40262372/article/details/112556249

四、如有疑问可加QQ群讨论:725936761 博主免费答疑

215.数组中第的K个最大元素(力扣leetcode) 博主可答疑该问题相关推荐

  1. 【LeetCode】【HOT】215. 数组中的第K个最大元素(优先队列)

    [LeetCode][HOT]215. 数组中的第K个最大元素 文章目录 [LeetCode][HOT]215. 数组中的第K个最大元素 package hot;import java.util.Co ...

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

    215. 数组中的第 K个最大元素 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数 组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5 ...

  3. ⭐算法入门⭐《哈希表》中等05 —— LeetCode 215. 数组中的第K个最大元素

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   给定整数数组nums和 ...

  4. 力扣(LeetCode)215. 数组中的第K个最大元素(C语言)

    一.环境说明 本文是 LeetCode 215题 : 数组中的第K个最大元素,使用c语言实现. 快速选择.查找无序数组的利器! 测试环境:Visual Studio 2019. 二.代码展示 void ...

  5. 215.数组中的第K个最大元素/347. 前 K 个高频元素

    2020-05-25 1.题目描述 数组中的第K个最大元素 2.题解 1.使用冒泡排序 2.使用快速排序 3.优先队列(内部是用堆来实现的) 3.代码 class Solution { public: ...

  6. vector删除第i个元素_[LeetCode] 215. 数组中的第K个最大元素

    题目链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/) 题目描述: 在未排序的数组中找到第 k 个最大的元素.请 ...

  7. 215. 数组中的第K个最大元素 BFPRT最牛解法

    在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 ...

  8. LeetCode 215. 数组中的第K个最大元素(快速排序)

    1. 题目 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 ...

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

    题目描述 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大 的元素,而不是第 k 个不同的元素. 题解 快速排序 代码 class Solution { pub ...

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

    难度:中等 频率:250 ** 题目:给定整数数组nums和整数k,清返回数组中第K个最大的元素. 清注意你要找的是数组排序后的第K个最大的元素,而不是第K个不同的元素. ** ** 题目类型: 经典 ...

最新文章

  1. PHP也玩并发,巧用curl 并发减少后端访问时间
  2. android phonegap插件开发方法 plugin
  3. [BZOJ] 1634: [Usaco2007 Jan]Protecting the Flowers 护花
  4. gdb InnoDB Redundant Row Format
  5. 常用jar包_发布Maven包的正确姿势
  6. 华为怎么安装服务器系统版本,服务器怎么安装操作系统版本
  7. 求职及学习心情文章收集
  8. Java 已老矣,生态却依旧!
  9. win10如何设置任务栏在左侧显示
  10. 使用sharepoint自带的文本编辑器1
  11. matlab多行注释快捷键。
  12. phpnow搭建本地网站服务器,phpnow搭建本地网站服务器
  13. HDOJ 5773 The All-purpose Zero
  14. Alkyne-PEG-COOH 炔烃PEG羧基
  15. 专家教你如何使用google
  16. c语言程序设计工资纳税系统,C语言程序设计纳税工资系统
  17. 郭天祥单片机编程100例程序及随笔3——定时器编程
  18. python批量打印网页_web 批量打印
  19. Python基础之集合set操作
  20. 苹果手机中病毒显示无服务器,苹果手机中毒五大特征!一般认为这是正常现象,你的iPhone中了吗...

热门文章

  1. C#扩展名关联【转】
  2. FusionCharts Free(2)
  3. 置为底层_C语言之C语言的底层操作
  4. bootstrap table 合并行_elementUI表格合并
  5. qt 增加的翻译没有作用上_Qt翻译文件使用方法
  6. Linux学习笔记6 - 用户和组群账户管理
  7. 数据结构(一):并查集
  8. qt中如何使用mysql_qt中如何使用mysql 以及静态编译qt中如何加上mysql(1)
  9. NYOJ 643 发短信(模拟)
  10. Oracle asm aix盘,AIX添加ASM的裸盘,存储底层硬盘迁移