文章目录
- 前言
- 一、最后一块石头的重量
- 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 题目描述
描述:
有一堆石头,每块石头的重量都是正整数。
每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为
x
和y
,且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: