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

LeetCode刷题---哈希表---215

数组中第k个最大元素

215. 数组中的第K个最大元素 - 力扣(LeetCode)

题目:

给定整数数组 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

自己的思路和代码:

思路:

        我们可以声明一个map,第一维是数组出现的元素,第二维是数组出现元素的次数,因为map可以自己进行排序。所以我们只需要再次遍历这个map就可以找到我们所需要的元素了。

代码:
class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        map<int, int> mymap;

        for(int i=0; i<nums.size(); i++) {
            mymap[nums[i]]++;
        }

        int score = 0;
        for(auto itr=mymap.rbegin(); itr!=mymap.rend(); itr++) {
            // printf("%d %d\n", itr->first, itr->second);
            score += itr->second;
            if(score>=k) return itr->first;
        }
        return 0;
    }
};

http://www.dtcms.com/a/26345.html

相关文章:

  • Jedis 客户端 用于java连接redis服务
  • Vue3 打造 Windows 桌面个性高效组件工具
  • git clone
  • Java运算符
  • 【原创】Ubuntu 22安装nexus私服
  • LeetCode刷题---哈希表---451
  • Kubernetes Pod健康检查全解析:从Liveness到滚动更新,掌握容器健康管理的核心技巧
  • DeepSeek是什么?两种模型的对比?
  • 系统设计之分布式
  • C++编程语言:抽象机制:模板和层级结构(Bjarne Stroustrup)
  • 宏块划分的原理
  • LeetCode1299
  • 自动创建spring boot应用(eclipse版本)
  • DeepSeek 入门指南
  • 【解决方法】vite-plugin-svg-icons使用中出现问题[vite] Cannot find package ‘fast-glob‘
  • 网络爬虫学习:借助DeepSeek完善爬虫软件,实现模拟鼠标右键点击,将链接另存为本地文件
  • BiRefNet C++ TensorRT (二分类图像分割)
  • MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 1
  • [原创](Modern C++)现代C++的关键性概念: 妙用std::reference_wrapper, 让std::list容器具有随机访问功能.
  • Zookeeper(54)如何使用Zookeeper的命令行工具?
  • 寒假学习总结
  • 如何解决服务器端口被攻击:全面防护与快速响应
  • 侯捷 C++ 课程学习笔记:设计模式在面向对象开发中的应用
  • Soft Actor-Critic (SAC)算法
  • 嵌入式人工智能应用-第四章 逻辑回归 8
  • unity学习48:动态障碍物 Obstacle 对 NavMesh的影响
  • LearnOpenGL——高级OpenGL(下)
  • 企业级RAG开源项目分享:Quivr、MaxKB、Dify、FastGPT、RagFlow
  • 4.4 使用Datasets.map方法处理数据集:从基础到企业级优化
  • Spring IoC DI:控制反转与依赖注入