215。数组中第K个最大元素(堆实现)
class Solution:
def findKthLargest(self, nums: List[int], k: int) -> int:
"""堆排序思想"""
def heapify(array, start, end):
while True:
max_pos = start #初始化最大值所在位置为目标所在
if start*2 + 1 <= end and array[max_pos] < array[start*2+1]:
# 如果左叶子节点存在,且大于目标值,则将最大值所在位置指向该节点所在位置
max_pos = start*2 + 1
if start*2 + 2 <= end and array[max_pos] < array[start*2+2]:
# 如果右叶子节点存在,且大于目标值,则将最大值所在位置指向该节点所在位置
max_pos = start*2 + 2
if max_pos == start:
# 如果目标即为最大,完成该节点堆化,跳出循环
break
# 交换位置,将最大值
array[start], array[max_pos] = array[max_pos], array[start]
start = max_pos
# 建堆,只需要对前半节点堆化
for i in range(len(nums)//2-1, -1, -1):
heapify(nums, i, len(nums)-1)
# 排序,只需要循环K次,排序TOP K个节点
i = len(nums) - 1
while i > len(nums) - 1 - k:
nums[0], nums[i] = nums[i], nums[0]
i -= 1
heapify(nums, 0, i)
return nums[len(nums)-k]
215。数组中第K个最大元素(堆实现)的更多相关文章
- [leetcode]215. Kth Largest Element in an Array 数组中第k大的元素
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...
- 寻找数组中第K频繁的元素
问题是:给你一个数组,求解出现次数第K多的元素.当然leetcode上的要求是算法复杂度不能大于O(N*logN). 首先这个问题我先是在leetcode上看到,当时想了两种做法,做到一半都觉得不是很 ...
- Java实现 LeetCode 215. 数组中的第K个最大元素
215. 数组中的第K个最大元素 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6 ...
- 215. 数组中的第K个最大元素 + 快速排序 + 大根堆
215. 数组中的第K个最大元素 LeetCode-215 另一道类似的第k大元素问题:https://www.cnblogs.com/GarrettWale/p/14386862.html 题目详情 ...
- [LeetCode] 215. Kth Largest Element in an Array 数组中第k大的数字
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...
- C语言:将3*5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边。-在m行m列的二维数组中存放如下规律的数据,
//将3*5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边. #include <stdio.h> #define M 3 #define N 5 ...
- 【Leetcode 堆、快速选择、Top-K问题 BFPRT】有序矩阵中第K小的元素(378)
题目 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素. 请注意,它是排序后的第k小元素,而不是第k个元素. 示例: matrix = [ [ 1, 5, 9], [ ...
- [LeetCode] Kth Smallest Element in a Sorted Matrix 有序矩阵中第K小的元素
Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth ...
- [LeetCode] Kth Largest Element in an Array 数组中第k大的数字
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...
随机推荐
- python numpy常用的数学和统计函数
numpy模块的核心就是基于数组的运算,相比于列表和其他数据结构,数组的运算效率是最高的.在统计分析和挖掘过程中,经常会使用到numpy模块的函数,以下是常用的数学函数和统计函数: 常数p就是圆周率 ...
- JS事件——添加、移除事件
element.addEventListener(event, function, useCapture) 方法用于向指定元素添加事件句柄. event: 必须.字符串,指定事件名.注意: 例 使 ...
- Java中抽象类和接口的介绍及二者间的区别
接口(Interface)和抽象类(Abstract Class)是支持抽象类定义的两种机制. 一.抽象类 在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称 ...
- EventLoop-浏览器篇2
最近又碰到了event loop问题,之前研究的实在是浅显(https://www.cnblogs.com/zx0423/p/12641637.html)所以今天主要讲述promise的链式调用,as ...
- CAOZ:百度搜索引擎的人工干预的看法
http://www.wocaoseo.com/thread-247-1-1.html 百度确有人工干预的机制,但是这个机制与互联网上的传闻相差很大,人工干预的范围其实是非常小的,特别恶性的搜索结果, ...
- IDEA创建MAVEN项目并使用tomcat启动
一.开发环境准备 1.JDK1.8,已经配置好环境变量 2.IDEA2019.2,目前稳定版里面个人认为还不错的 3.tomcat服务器,笔者使用的是apache-tomcat-8.5.57 4.使用 ...
- 一张图对比React、Angular、Vue.js
文章原文地址:https://baijiahao.baidu.com/s?id=1609374985643812253&wfr=spider&for=pc
- wampserver64 apache2.4版本局域网互相访问总结
wampserver64 apache2.4版本局域网互相访问总结 背景:在我的电脑上给算法组开发了一个工具,需要在局域网环境下其他同事都能访问到,搞了一下午终于搞定,于是整理了这篇文档,给其他同行 ...
- Android开发工程师面试题总结。android开发面试经验
1:Android中五种数据存储方式分别是什么?他们的特点? (1)SharedPreference,存放较少的五种类型的数据,只能在同一个包内使用,生成XML的格式存放在设备中 (2) SQ ...
- Unity报与System.IO相关的错误
比如这个: Type `System.IO.FileInfo' does not contain a definition for `OpenText' and no extension method ...