题目
代码
【Python版本-傻瓜式】

class Solution:
def lastStoneWeight(self, stones: List[int]) -> int:
while len(stones)>1:
stones.sort()
x=stones[-1]
stones.pop()
y=stones[-1]
stones.pop()
if x!=y:
stones.append(abs(x-y))
if stones:
return stones[-1]
return 0
【CPP版本-最大堆】

class Solution {
public:
int lastStoneWeight(vector<int>& stones) {
priority_queue<int> q;
for (int s: stones) {
q.push(s);
}
while (q.size() > 1) {
int a = q.top();
q.pop();
int b = q.top();
q.pop();
if (a > b) {
q.push(a - b);
}
}
return q.empty() ? 0 : q.top();
}
};

这篇博客介绍了两种实现方式来解决石头游戏的最后一块石头重量问题。首先展示了Python版本的解决方案,利用排序后选取最大值并进行减法操作。接着,介绍了C++版本的解冑,通过使用最大堆来找出两个最大的元素进行比较和更新。这两个实现都是为了找出当所有石头都两两相消后的剩余重量。
497

被折叠的 条评论
为什么被折叠?



