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

总结

相关推荐
月华路8 小时前
G1 GC 对数组与大对象(Humongous)的处理
java·jvm·算法
我想走路带风8 小时前
LRU和最长前缀和(计算机网络算法)
计算机网络·算法
M78佐菲9 小时前
Linux学习笔记:进程
linux·笔记·学习·算法
徐小夕10 小时前
表格、文档、甘特、大屏、表单一站打通:pxcharts超级表格4.0正式上线!
前端·算法·github
TechLee11 小时前
跨语言加解密总对不上?这个纯 Go 神库让 AES/RSA 与 PHP、Java 100% 互通
java·后端·算法
月华路13 小时前
G1 新生代对象晋升老年代:实现机制与 GC 日志
java·jvm·算法
万法若空13 小时前
排列组合恒等式
c++·算法
Nil20813 小时前
leetcode 105从前序和中序遍历序列构造二叉树
算法·leetcode·职场和发展
一直C13 小时前
【数据结构】哈希表+算法复杂度与经典排序查找(C语言)
java·linux·开发语言·数据结构·算法·ubuntu·散列表