老卫带你学---leetcode刷题(215. 数组中的第K个最大元素)

这篇具有很好参考价值的文章主要介绍了老卫带你学---leetcode刷题(215. 数组中的第K个最大元素)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

问题:

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

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

你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

输入: [3,2,1,5,6,4], k = 2
输出: 5
示例 2:

输入: [3,2,3,1,2,4,5,5,6], k = 4
输出: 4
提示:

1 <= k <= nums.length <= 105
-104 <= nums[i] <= 104

解决:

堆排序

对每个元素入堆,然后pop出来k-1个

这里需要注意,默认堆为最小堆,所以在入堆的时候入num的负数,就会trick为最大堆文章来源地址https://www.toymoban.com/news/detail-722207.html

import heapq
class Solution:
    def findKthLargest(self, nums: List[int], k: int) -> int:
        l = []
        for num in nums:
            heapq.heappush(l,-num)
            print(l)
        for _ in range(k-1):
            heapq.heappop(l)
        return -l[0]

到了这里,关于老卫带你学---leetcode刷题(215. 数组中的第K个最大元素)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • leetcode 215.数组中第k大的元素

    🌟 leetcode链接:数组中第k大的元素 思路: 使用堆数据结构,大堆的堆顶是堆内最大的元素,也就是把当前堆 pop k - 1 次,第 k 次 top 出来的元素就是第 k 大的数。 代码:

    2024年02月09日
    浏览(35)
  • 215. 数组中的第K个最大元素

    给定整数数组 nums 和整数 k ,请返回数组中第 **k** 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 示例 2: 提示: 1 = k = nums.length = 105 -104 = nums[i] = 104 解答

    2024年02月11日
    浏览(33)
  • 215数组中的第K个最大元素

    给定整数数组 nums 和整数 k ,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 示例 2: 提示: 1 = k = nums.length = 105 -104 = nums[i] = 104 在这个代

    2024年02月22日
    浏览(27)
  • LeetCode刷题--- 最大子数组和

    个人主页: 元清加油_【C++】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题   【C++】     ​​​​​​ 数据结构与算法  ​​​ 前言:这个专栏主要讲述动态规划算法,所以下面题目主要也是这些算法做的   我讲述题目会把讲解部分分为3个部分: 1、

    2024年01月23日
    浏览(41)
  • LeetCode刷题小记 一、【数组】

    本系列笔记主要作为笔者刷题的题解,所用的语言为 Python3 ,若于您有助,不胜荣幸。 1.1 理论基础 数组[array]是一种线性的数据结构,将相同的数据类型存储在连续的内存空间当中,我们将元素在数组中的位置称为该元素的索引[index]。由于数组是连续存储的特性,我们访问

    2024年02月19日
    浏览(32)
  • 【LeetCode刷题记录】数组专题

    说明 : 文章内容为个人的力扣刷题记录,不定时更新。 文章内容如有错误,欢迎指正。 2023-04-24 题目1. 两数之和 1. 两数之和 - 力扣(Leetcode) 方法一:暴力解法,循环遍历 C++ python 方法二:哈希表 参考1. 两数之和 - 力扣(Leetcode) 哈希表的查找时间复杂度为O(1),可以大大

    2024年02月02日
    浏览(33)
  • LeetCode刷题(ACM模式)-01数组

    参考引用:代码随想录 注:每道 LeetCode 题目都使用 ACM 代码模式,可直接在本地运行,蓝色字体为题目超链接 0. 数组理论基础 数组( array )是 存放在连续内存空间上的相同类型数据的集合 ,是一种 复合数据类型 ,它是 有序数据的集合 ,在存储空间中也是按顺序存储。数

    2024年02月11日
    浏览(27)
  • LeetCode刷题系列之《双指针解数组》

    各位csdn的友友们好啊,今天阿博给大家分享几道leetcode上的经典数组题,通过这次的学习,相信友友们可以更全面的认识指针和数组🍉🍉🍉 一.题目描述 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。

    2023年04月26日
    浏览(26)
  • 【LeetCode刷题(数组and排序)】:存在重复元素

    给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 示例 1: 输入:nums = [1,2,3,1] 输出:true 示例 2: 输入:nums = [1,2,3,4] 输出:false 示例 3: 输入:nums = [1,1,1,3,3,4,3,2,4,2] 输出:true 在对数字从小到大排序之后,数

    2024年02月07日
    浏览(29)
  • Leetcode刷题详解——长度最小的子数组

    给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件的子数组,返回 0 。 示例 1: 示例 2: 示例 3: 提示: 1 = target = 109 1 = nums.length

    2024年02月07日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包