有一堆石头,每块石头的重量都是正整数。
每一回合,从中选出两块最重的石头,然后将它们一起粉碎。假设石头的重量分别为 x
和 y
,且 x <= y
。那么粉碎的可能结果如下:
- 如果
x == y
,那么两块石头都会被完全粉碎; - 如果
x != y
,那么重量为x
的石头将会完全粉碎,而重量为y
的石头新重量为y-x
。
最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0
。
提示:
1 <= stones.length <= 30
1 <= stones[i] <= 1000
/**
* @param {number[]} stones
* @return {number}
*/
var lastStoneWeight = function(stones) {
};
个人解法
var lastStoneWeight = function(stones) {
//降序排列
stones.sort((a,b) => b - a);
while(stones.length > 1){
if(stones[0] === stones[1]){
stones.splice(0 , 2);
}else{
stones.push(Math.abs(stones[0] - stones[1]));
stones.splice(0 , 2);
stones.sort((a,b) => b - a);
}
}
return stones[0] === undefined ? 0 : stones[0];
};