1、不需要特别复杂的算法,遍历即可
2、对于不定长遍历,通常的做法是倒序,这样的好处是可以控制每次改变的数
3、为啥每次循环之前要排序呢?这样可以避免判断两个石头相减为负,即每次都是重的石头-轻的石头(或者相等)
class Solution {
public int lastStoneWeight(int[] stones) {
if (stones.length == 1) {
return stones[0];
}
// 从最后一个石头开始
for (int i = stones.length - 1; i > 0; --i) {
// 排序0到最后一个石头
Arrays.sort(stones, 0, i + 1);
// 将粉碎剩余放入靠前的石块
stones[i - 1] = stones[i] - stones[i - 1];
}
return stones[0];
}
}