题目:

代码:
- 解法一
class Solution {
public int lastStoneWeight(int[] stones) {
int weight=0;
int len=stones.length;
for(int i=0;i<len-1;i++){
Arrays.sort(stones); //升序排序
weight =stones[len-1]-stones[len-2];
stones[len-1]=weight; //相减的值赋给倒数第一个
stones[len-2]=0;
}
return stones[len-1]; //循环结束后 升序最大的值返回
}
}
- 解法二
//思路与解法一相似
class Solution {
public int lastStoneWeight(int[] stones) {
int count=stones.length;
if(count==1){
return stones[0];
}else{
while(stones[count-2]!=0){
//给石头重量进行升序
Arrays.sort(stones);
//处理最重的两个石头
stones[count-1] =stones[count-1] - stones[count-2] ;
stones[count-2]=0;
Arrays.sort(stones);
}
return stones[count-1];
}
}
}
本文探讨了处理石头重量问题的两种算法解决方案。通过升序排序并计算两最大值之差,迭代直至只剩一块石头,最终返回该石头的重量。解法一使用单一循环完成,而解法二则采用循环直到倒数第二个元素为0的策略。
345

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



