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

总结

相关推荐
OOJO3 小时前
c++---list介绍
c语言·开发语言·数据结构·c++·算法·list
别或许5 小时前
1、高数----函数极限与连续(知识总结)
算法
田梓燊5 小时前
code 560
数据结构·算法·哈希算法
笨笨饿5 小时前
29_Z变换在工程中的实际意义
c语言·开发语言·人工智能·单片机·mcu·算法·机器人
kobesdu5 小时前
综合强度信息的激光雷达去拖尾算法解析和源码实现
算法·机器人·ros·slam·激光雷达
weixin_413063215 小时前
记录 MeshFlow-Online-Video-Stabilization 在线稳像
算法·meshflow·实时防抖
会编程的土豆6 小时前
【数据结构与算法】动态规划
数据结构·c++·算法·leetcode·代理模式
炘爚6 小时前
深入解析printf缓冲区与fork进程复制机制
linux·运维·算法
迈巴赫车主7 小时前
蓝桥杯19724食堂
java·数据结构·算法·职场和发展·蓝桥杯
6Hzlia7 小时前
【Hot 100 刷题计划】 LeetCode 78. 子集 | C++ 回溯算法题解
c++·算法·leetcode