Leetcode 1046. 最后一块石头的重量
Published on 2022-05-20 21:23 in 暂未分类 with 萧海~

Leetcode 1046. 最后一块石头的重量

    在这里插入图片描述
    有一堆石头,每块石头的重量都是正整数。

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

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

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

    示例:

    输入:[2,7,4,1,8,1]
    输出:1
    解释:
    先选出 78,得到 1,所以数组转换为 [2,4,1,1,1]
    再选出 24,得到 2,所以数组转换为 [2,1,1,1]
    接着是 21,得到 1,所以数组转换为 [1,1,1]
    最后选出 11,得到 0,最终数组转换为 [1],这就是最后剩下那块石头的重量。

    提示:

    • 1 <= stones.length <= 30
    • 1 <= stones[i] <= 1000

    Code:

    class Solution {
    public:
    int lastStoneWeight(vector<int>& stones) {
    int cnt=0;
    while(1)
    {
    sort(stones.begin(),stones.end());
    if(stones.size()>=2)
    {
    int x1=stones[stones.size()-1];
    int x2=stones[stones.size()-2];
    if(x1!=x2)
    {
    stones.erase(stones.end()-2);
    stones.erase(stones.end()-1);
    stones.push_back(x1-x2);
    }
    else
    {
    stones.erase(stones.end()-2);
    stones.erase(stones.end()-1);
    }
    }
    else
    {
    if(stones.size()==1)
    return stones[0];
    else
    return 0;
    }
    }
    return cnt;
    }
    };
    posted @   萧海~  阅读(26)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · winform 绘制太阳,地球,月球 运作规律
    · AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
    · 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
    · 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
    · 上周热点回顾(3.3-3.9)
    历史上的今天:
    2021-05-20 C语言常用的一些转换工具函数!
    2021-05-20 C语言如何实现动态扩容的string
    2021-05-20 当初数据结构与算法这样学,现在也不至于这样!!!
    2021-05-20 回调函数原来这么容易理解
    点击右上角即可分享
    微信分享提示
    电磁波切换