题目:
今天的题很简单,只需要简单模拟它的做法就行了。
思路:
由于每一次都要找到最大的两块,相比于指针去寻找,还不如直接使用sort去排序。
对于粉碎之后如果产生了小的石头,记录即可。被粉碎的石头记为0.
假如最大的石头也为0了,则程序结束,返回结果。
C++代码:
class Solution {
public:
int lastStoneWeight(vector<int>& stones) {
int index = stones.size() - 1;
for (int i = 0; i < stones.size() - 1; i++){ //最多比较length-1次
sort(stones.begin(),stones.end());
if (stones[index - 1] == 0) break; //说明最多只剩一块石头
stones[index] -= stones[index - 1]; //两种不同情况使用同一表达式处理
stones[index - 1] = 0; //每次比较后肯定会有一块石头被destroyed
}
return stones[index];
}
};