美文网首页
LeetCode 1046 最后一块石头的重量

LeetCode 1046 最后一块石头的重量

作者: 萨缪 | 来源:发表于2019-10-31 19:38 被阅读0次

1046. 最后一块石头的重量

有一堆石头,每块石头的重量都是正整数。

每一回合,从中选出两块最重的石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:

如果 x == y,那么两块石头都会被完全粉碎;
如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。

最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。

这算是我这个算法小白初次接触贪心算法碰到的第一个问题,结果还不是通过贪心解决的.... 因为贪心的思路我实在是有些不懂,明明有更好的解决方法 非要用那么复杂的...
这里面有几个注意的点 第一 数组的长度是size() 每次都记成length()
第二 排序算法如果不加第三个参数的话那么默认升序排序 也就是从小到大 加上第三个参数 greater<int>()那么就是降序,由大到小排序
第三 删除数组中的单个元素的确是用erase() 但是里面的参数注意是一个迭代器,而不是一个int型整数 比如str.bengin() str.end()之类的
这道题的思路很简单 就不说了 源代码如下:

class Solution {
public:
    int lastStoneWeight(vector<int>& stones) {
        while (stones.size() > 1) {
            sort(stones.begin(), stones.end(), greater<int>());
            if (stones[0] == stones[1]) {
                stones.erase(stones.begin());
                stones.erase(stones.begin());
            } else {
                stones[0] = stones[0] - stones[1];
                stones.erase(stones.begin()+1);
            }
            //return stones.size();
        }
        if (stones.size() != 0) {
            return stones[0];
        }
         return 0;
    }
};

相关文章

网友评论

      本文标题:LeetCode 1046 最后一块石头的重量

      本文链接:https://www.haomeiwen.com/subject/tzztbctx.html