【优选算法系列】【专题十四优先级队列】第一节.(1046. 最后一块石头的重量和703. 数据流中的第 K 大元素)

文章目录

  • 前言
  • 一、最后一块石头的重量
  • 1.1 题目描述
  • 1.2 题目解析
  • 1.2.1 算法原理
  • 1.2.2 代码编写
  • 1.2.3 题目总结
  • 二、数据流中的第 K 大元素
  • 2.1 题目描述
  • 2.2 题目解析
  • 2.2.1 算法原理
  • 2.2.2 代码编写
  • 2.2.3 题目总结
  • 总结

前言


一、最后一块石头的重量

1.1 题目描述

描述:

有一堆石头,每块石头的重量都是正整数。

每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 xy,且 x <= y。那么粉碎的可能结果如下:

  • 如果 x == y,那么两块石头都会被完全粉碎;
  • 如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x

最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0


提示:

  • 1 <= stones.length <= 30
  • 1 <= stones[i] <= 1000

示例1:


1.2 题目解析

1.2.1 算法原理


1.2.2 代码编写


1.2.3 题目总结


二、数据流中的第 K 大元素

2.1 题目描述

描述:

设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。

请实现 KthLargest 类:

  • KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。
  • int add(int val)val 插入数据流 nums 后,返回当前数据流中第 k 大的元素。

提示:

  • 1 <= k <= 10^4
  • 0 <= nums.length <= 10^4
  • -104 <= nums[i] <= 10^4
  • -104 <= val <= 10^4
  • 最多调用 add 方法 10^4
  • 题目数据保证,在查找第 k 大元素时,数组中至少有 k 个元素

示例1:


2.2 题目解析

2.2.1 算法原理


2.2.2 代码编写


2.2.3 题目总结

总结

相关推荐
我不是懒洋洋6 分钟前
【经典题目】链表OJ(轮转数组、返回倒数第k个节点、链表的回文结构)
c语言·开发语言·数据结构·算法·链表·visual studio
SteveSenna6 分钟前
aubo i5+pika realsense+ACT训练完整流程
人工智能·学习·算法·机器人
AC赳赳老秦13 分钟前
OpenClaw对接百度指数:关键词热度分析,精准定位博客创作方向
java·python·算法·百度·dubbo·deepseek·openclaw
551只玄猫17 分钟前
Why Financial Data Cannot Be Modeled with “Standard Machine Learning”
算法·机器学习·数学建模·金融·数据科学·英文·金融建模
小雅痞19 分钟前
[Java][Leetcode middle] 274. H 指数
java·算法·leetcode
你撅嘴真丑24 分钟前
a 进制转 b 进制(2~16)
算法
IronMurphy9 小时前
【算法三十九】994. 腐烂的橘子
算法
Ares-Wang10 小时前
算法》》旅行商问题 TSP、7座桥问题 哈密顿回路 深度优先 和 宽度优先
算法·深度优先·宽度优先
Liqiuyue10 小时前
Transformer:现代AI革命背后的核心模型
人工智能·算法·机器学习
WolfGang00732110 小时前
代码随想录算法训练营 Day34 | 动态规划 part07
算法·动态规划