目录

LeetCode-215题


LeetCode-215题

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

public class Solution {/*** 这里是基于小顶堆这种数据结构来实现的*/public int findKthLargest(int[] nums, int k) {// 实例化一个小顶堆MinHeap minHeap = new MinHeap(k);// 往小顶堆中添加k个元素for (int i = 0; i < k; i++) {minHeap.offer(nums[i]);}// 添加k个元素之后for (int i = k; i < nums.length; i++) {// 遇到不大于堆顶元素的直接跳过不管,继续下一个if (nums[i] <= minHeap.peek()) {continue;}// 遇到大于堆顶元素的就将其把堆顶元素替换minHeap.replace(nums[i]);}// 此时堆顶元素就是第k个最大元素return minHeap.peek();}/*** 自定义一个小顶堆*/private static class MinHeap {private final int[] container;private int size;public MinHeap(int capacity) {container = new int[capacity];}/*** 添加元素*/public boolean offer(int num) {if (size == container.length)return false;// 执行上浮操作siftUp(num);return true;}/*** 上浮*/private void siftUp(int num) {int child = size++;// 通过子节点找父节点位置int parent = (child - 1) >> 1;// 只要满足条件就一直找并比较while (child > 0 && container[parent] > num) {container[child] = container[parent];child = parent;parent = (child - 1) >> 1;}// 新添加的元素放到合适的位置container[child] = num;}/*** 替换顶部元素*/public void replace(int num) {container[0] = num;// 执行下潜操作siftDown(0);}/*** 下潜*/private void siftDown(int parent) {// 通过父节点位置找左子节点和右子节点的位置int left = (parent << 1) + 1;int right = left + 1;// 只要满足有任一子节点的值小于父节点的值就交换顺序int min = parent;if (left < size && container[left] < container[min]) {min = left;}if (right < size && container[right] < container[min]) {min = right;}if (min != parent) {swap(parent, min);siftDown(min);}}/*** 交换i位置和j位置上的值*/private void swap(int i, int j) {if (i == j)return;container[i] = container[i] ^ container[j];container[j] = container[i] ^ container[j];container[i] = container[i] ^ container[j];}/*** 查看堆顶元素*/public int peek() {return container[0];}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/90248.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90248.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/90248.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高亮匹配关键词样式highLightMatchString、replaceHTMLChar

replaceHTMLChar: s > s.toString().replace(/</g, <).replace(/>/g, >),// 高亮匹配关键词样式----------------------------------------highLightMatchString(originStr, matchStr, customClass ) {matchStr && (matchStr matchStr.replace(/[.*?…

HUAWEI Pura80系列机型参数对比

类别HUAWEI Pura80 UltraHUAWEI Pura80 ProHUAWEI Pura80 ProHUAWEI Pura80建议零售价&#xffe5;9999起&#xffe5;7999起&#xffe5;6499起&#xffe5;4699起颜色鎏光金、鎏光黑釉红、釉青、釉白、釉黑釉金、釉白、釉黑丝绒金、丝绒绿、丝绒白、丝绒黑外观材质设计光芒耀…

使用 PyTorch 的 torchvision 库加载 CIFAR-10 数据集

CIFAR-10是一个更接近普适物体的彩色图像数据集。CIFAR-10 是由Hinton 的学生Alex Krizhevsky 和Ilya Sutskever 整理的一个用于识别普适物体的小型数据集。一共包含10 个类别的RGB 彩色图片&#xff1a;飞机&#xff08; airplane &#xff09;、汽车&#xff08; automobile …

蓝桥杯51单片机

这是我备考省赛的时候总结的错误点和创新点那个时候是用来提醒自己的&#xff0c;现在分享给你们看^_^一考点二注意点记得初始化&#xff39;&#xff14;&#xff0c;&#xff39;&#xff15;&#xff0c;&#xff39;&#xff16;&#xff0c;&#xff39;&#xff17;&…

【2025/07/23】GitHub 今日热门项目

GitHub 今日热门项目 &#x1f680; 每日精选优质开源项目 | 发现优质开源项目&#xff0c;跟上技术发展趋势 &#x1f4cb; 报告概览 &#x1f4ca; 统计项&#x1f4c8; 数值&#x1f4dd; 说明&#x1f4c5; 报告日期2025-07-23 (周三)GitHub Trending 每日快照&#x1f55…

【生成式AI導論 2024】第12講:淺談檢定大型語言模型能力的各種方式 学习记录

跟标准答案做对比看是否正确 选择题是不是正确 MMLU massive multitask Language Understanding MT-bench 使用语言模型来评分 还有其他任务的对比,也有特别刁钻的问题 阅读长文的能力 grep kamradt 大海捞针

嵌入式 Qt 开发:实现开机 Logo 和无操作自动锁屏

在嵌入式设备开发中&#xff0c;为设备添加开机 Logo 和无操作自动锁屏功能是提升用户体验的重要环节。本文将详细介绍如何在 Qt 嵌入式项目中实现这两个功能。我们将使用 Qt 5/6 和 Linux 环境&#xff0c;确保代码的可移植性和通用性。项目结构为了实现这两个功能&#xff0c…

【AI智能体】Dify 开发与集成MCP服务实战操作详解

目录 一、前言 二、Dify 介绍 2.1 Dify是什么 2.2 MCP 介绍 2.2.1 什么是MCP 2.2.2 MCP核心特性 2.3 Dify中开发与使用MCP介绍 2.3.1 MCP Server开发与使用 2.4 dify 开发MCP Server优势 三、Dify开发与集成MCP操作过程 3.1 Dify MCP 插件说明 3.2 安装mcp-server插…

django filter按两个属性 去重

在Django中&#xff0c;如果你想基于两个属性去重&#xff0c;可以使用distinct()方法并结合annotate()和Count()来实现。这种方法通常用在查询集中&#xff0c;尤其是在你需要统计基于某些字段的唯一值时。 示例 假设你有一个Person模型&#xff0c;它有两个字段&#xff1a;f…

PHP高级进阶:突破编程边界,开启技术新征程

目录一、PHP 高级函数的深度剖析1.1 回调函数的高级应用1.2 递归函数的优化技巧二、面向对象编程的深化2.1 抽象类与接口的实际运用2.2 设计模式在 PHP 中的实现三、PHP 与数据库交互的高级技术3.1 数据库连接池的使用3.2 事务处理与数据一致性四、性能优化与调试4.1 代码性能分…

cx_Freeze python 打包详解

优点&#xff1a;有时比 PyInstaller 更好处理外部 .pyd做法&#xff1a;安装 cx_Freezeshpip install cx_Freeze新建 setup.py&#xff1a;pythonfrom cx_Freeze import setup, Executablebuild_exe_options {"packages": ["apscheduler.triggers.interval&qu…

Java字符串不可变性:从安全哲学到性能艺术的完美平衡

目录 引言 一、什么是String的不可变性&#xff1f; 二、解剖String的“防弹衣”&#xff1a;底层实现机制 1. final的三重防御体系 2. 方法实现的精妙设计 3. 构造函数的防御性编程 三、为什么String必须不可变&#xff1f;设计哲学的五大支柱 1. 字符串常量池&#x…

多服务器批量发布软件

当需要同时发布程序到多个服务器的时候&#xff0c;常规是通过jekins了但是喜欢了手动档&#xff0c;直接写了个简单批量发布软件&#xff0c;程序编译发布后&#xff0c;直接加载配置&#xff0c;选择对应的服务器&#xff0c;直接电机发布即可&#xff0c;基本可以媲美jekins…

基于.Net Core开源的库存订单管理系统

今天给大家推荐一套开源的库存订单管理系统。 项目简介 该项目是基于Asp.Net Core Mvc开发的库存订单管理系统&#xff0c;主要实现模块有仓库、产品、供应商、客户、采购订单、销售订单、发货、收货等等&#xff0c;该项目是单体架构&#xff0c;技术栈也不是最新的&#xf…

Django学习之旅--第13课:Django模型关系进阶与查询优化实战

在Django开发中&#xff0c;模型关系设计与查询性能直接决定了系统的扩展性和效率。当业务场景从简单的数据存储升级为复杂的关联分析&#xff08;如订单统计、用户行为分析&#xff09;时&#xff0c;基础的模型关系和查询方式已无法满足需求。本节课将深入讲解模型关系的高级…

简单理解现代Web应用架构:从简单到企业级

在开发Web应用程序时&#xff0c;理解如何构建一个既安全又高效的系统至关重要。本文将通过介绍从简单的三层架构到复杂的企业级架构的演变过程&#xff0c;帮助您更好地理解这些概念。1. 基础架构&#xff1a;React Node.js MySQL前端&#xff08;React&#xff09;&#xf…

修改 Lucide-React 图标样式的方法

修改 Lucide-React 图标样式的方法 使用 lucide-react 时&#xff0c;你可以通过多种方式修改图标的样式。以下是几种常用的方法&#xff1a; 1. 通过 className 属性 import { Home } from lucide-react;function MyComponent() {return <Home className"text-blue-50…

神经架构搜索革命:从动态搜索到高性能LLM的蜕变之路

本文将揭示如何通过神经架构搜索技术&#xff08;NAS&#xff09;自动发现最优网络结构&#xff0c;并将搜索结果转化为新一代高性能大型语言模型的核心技术。我们的实验证明&#xff0c;该方法在同等计算资源下可实现80%的性能飞跃&#xff01;第一部分&#xff1a;神经架构搜…

【LeetCode 热题 100】78. 子集——(解法三)位运算

Problem: 78. 子集 题目&#xff1a;给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 文章目录整体思路完整代码时空复杂度时间复杂度&#xff1…

XCKU035‑1SFVA784C Xilinx FPGA KintexUltraScale AMD

XCKU035‑1SFVA784C 属于 Xilinx Kintex UltraScale 系列&#xff0c;基于领先的 20 nm FinFET 技术制程&#xff0c;旨在为中高端应用提供卓越的性能与功耗平衡。该器件采用 784‑ball Fine‑pitch BGA&#xff08;SFVA784&#xff09;封装&#xff0c;速度等级‑1&#xff0…