【优选算法系列】【专题十四优先级队列】第一节.(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 题目总结

总结

相关推荐
cpp_250115 小时前
P1359 租用游艇
c++·算法·题解·洛谷·线性dp
Naisu Xu15 小时前
数学笔记:最小二乘法(直线拟合)
笔记·算法·最小二乘法
weixin_3954489115 小时前
main.c_raw_0311_lyp
前端·网络·算法
weixin_6495556715 小时前
C语言程序设计第四版(何钦铭、颜晖)第七章之利用数组求矩阵各行元素之和并输出
c语言·算法·矩阵
智者知已应修善业15 小时前
【输入矩阵将其按副对角线交换后输出】2024-11-27
c语言·c++·经验分享·笔记·线性代数·算法·矩阵
17(无规则自律)15 小时前
C++ 链表修炼指南
数据结构·c++·算法·leetcode·链表
KhalilRuan15 小时前
基于OpenGL实现布料模拟
算法
大江东去浪淘尽千古风流人物15 小时前
【claw】 OpenClaw 的架构设计探索
深度学习·算法·3d·机器人·slam
闻缺陷则喜何志丹15 小时前
【字典树 回溯】P7210 [COCI 2020/2021 #3] Vlak|普及+
c++·算法·字典树·回溯·洛谷
夏玉林的学习之路15 小时前
委托构造和using关键字
开发语言·c++·算法