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


    1046. 最后一块石头的重量

     

    描述:

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

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

    如果 x == y,那么两块石头都会被完全粉碎;
    如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。
    最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。

    提示:

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

     1 解法:    0 ms    8.5 MB
     2 class Solution {
     3 public:
     4     int result(priority_queue<int> &q){
     5         int newStone=0;
     6         while(q.size()>=2){//最后剩余 1,或者0个
     7             int x=0,y=0;
     8             for(int i=0;i<2;i++){//x一定大于等于 y
     9                 if(i==0){//取出两个最大的石头
    10                     x=q.top(),q.pop();
    11                 }else{
    12                     y=q.top(),q.pop();
    13                 }
    14                // i==0?x=q.top(),q.pop():y=q.top(),q.pop();
    15             }
    16             if(x!=y){//石头重量均为正整数
    17                 newStone=x-y;
    18                 q.push(newStone);//将新的石头重量 放入优先队列中
    19             }
    20         }
    21         if(q.size()==1) return q.top();//有一个剩余
    22         else return 0;//没有是同剩余
    23     }
    24     int lastStoneWeight(vector<int>& stones) {
    25         /*
    26         思路:
    27             1:先将数据放入优先队列中,从大到小排序
    28             2: 只要优先队列中的大小>=2 ,那么取出两个最大重量的石头
    29             3:若两块石头重量相等,粉碎这两块石头,pop()
    30             4:若不相等,算出两块石头的差(正整数) 放入优先队列中
    31             5:直到优先队列的长度为1,或者为0,返回结果;
    32             6:长度为1,返回这个石头的重量
    33             7:长度为0,返回0
    34         */
    35         priority_queue<int> q;//优先队列,默认从大到小排序
    36         for(int data:stones){
    37             q.push(data);
    38         }
    39         return result(q);
    40     }
    41 };
  • 相关阅读:
    ionic新手教程第三课-在项目中使用requirejs分离controller文件和server文件
    高并发測试工具webbench
    内存管理详解
    linux command ---1
    运维方面的软件(系统)
    配置 php-fpm 监听的socket
    FastCgi与PHP-fpm之间是个什么样的关系
    分表处理设计思想和实现
    PHP 命名空间以及自动加载(自动调用的函数,来include文件)
    javascript closure
  • 原文地址:https://www.cnblogs.com/NirobertEinteson/p/12002818.html
Copyright © 2020-2023  润新知