Menu
CoddyTech

Last Stone Weight

简单堆python iconjava iconcpp iconc iconjs icon+10

你有一堆石头,stones[i] 表示第 i 块石头的重量。每一轮,取出最重的两块石头并将它们撞在一起。如果它们重量相同,两块石头都会被销毁。否则,较轻的石头被销毁,较重的石头重量减去两者重量之差。

编写 lastStoneWeight,让它持续进行多轮操作,直到剩下不超过一块石头,并返回这块石头的重量;如果没有剩下石头,则返回 0。

函数

lastStoneWeight(stones: integer-array) → integer
stonesinteger-array
石堆中石头的重量
返回值integer
最后一块石头的重量,如果没有剩余石头则为 0

约束条件

  • 1 ≤ stones.length ≤ 104
  • 1 ≤ stones[i] ≤ 1000

示例

输入
stones = [3, 9, 4, 6, 2]
输出
0
解释
9 和 6 剩下 3,接着 4 和 3 剩下 1,然后 3 和 2 又剩下一个 1。两个 1 相互抵消,所以答案是 0。
challenge icon

进阶

重量最大为 1000。你能利用这个上限,在不使用堆的情况下,以 O(n + W) 的时间完成吗?其中 W 是最大的重量。

重置代码
def lastStoneWeight(stones):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

stones = [3, 9, 4, 6, 2]

预期输出

0