首页 > 其他分享 >最后一块石头的重量

最后一块石头的重量

时间:2023-07-17 20:56:58浏览次数:35  
标签:int 重量 石头 queue add 一块 poll

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

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

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

示例:

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/last-stone-weight
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

利用优先队列特性排序,但是耗时很大,屎山

class Solution {
    public int lastStoneWeight(int[] stones) {
        //ab代表基数,按照b>a的排序进行排列,这是优先队列的一个特性
        PriorityQueue <Integer> queue = new PriorityQueue<Integer>((a,b) -> b - a);
        for(int e : stones){
            queue.add(e);
        }
        //找到最后石头重量
        while(queue.size()>1){
            int x = queue.poll();
            int y = queue.poll();
            if(x>y){
                queue.add(x-y);
            }else{
                queue.add(0);
            }
        }
        return queue.poll();
    }
}

标签:int,重量,石头,queue,add,一块,poll
From: https://www.cnblogs.com/xiaochaofang/p/17561189.html

相关文章

  • J J BOND and超比组合 剪刀石头布
    constintMAX=10; srand(time(0)); intm,n,countm,countn; countm=countn=0; for(inti;i<MAX;i++){ m=rand()%3+1; cout<<"YouareJJBOND,comeon!"<<endl; cout<<"1,2,3,JJBOND"<<endl; cin>>n; if(n<......
  • 判断语句+ random的应用-剪刀石头布游戏
    1'''2需求:31.通过人机交换实现您的出拳(input函数的应用)42.通过伪随机数模块random实现模拟对手出拳53.然后进行数据处理,得出结果64.输入数字非0、1、2退出7'''89importrandom#导入随机数模块random1011whileTrue:12#人机交换:pla......
  • 牛客小白月赛74 G 跳石头,搭tizi
    题目链接)数据范围,2e5区间越长越省力。对于一个起点来说,从这里搭tizi最远到达的是序列中右侧第一个大于它的数所在的位置。用单调栈可以找到这样的区间,这些区间大致如下所示。就是最多只会有包含的情况,但是不会出现交叉的情况。然后可以这样渐次登高,到达最顶端。下降的......
  • [NOIP2015 提高组] 跳石头
    [NOIP2015提高组]跳石头题目背景一年一度的“跳石头”比赛又要开始了!题目描述这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有\(N\)块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从......
  • JAVA石头迷阵游戏
    大家帮我看看这个代码有没有问题,为什么将z设为作弊器但是在IDE中运行出来没有用//测试类importjavax.swing.*;publicclassTest{publicstaticvoidmain(String[]args){newMainFrame();}}importjavax.swing.*;importjava.awt.event.ActionEvent;......
  • 剪刀、石头、布 每局必胜法
    作者:古道轻风......
  • 代码随想录算法训练营第43天 | ● 1049. 最后一块石头的重量 II ● 494. 目标和
     第九章 动态规划 part05●  1049. 最后一块石头的重量 II ●  494. 目标和 ●  474.一和零    详细布置   1049. 最后一块石头的重量 II  本题就和 昨天的 416. 分割等和子集 很像了,可以尝试先自己思考做一做。 视频讲解:https://www......
  • 【计算机算法设计与分析】6-5 最小重量机器设计问题(C++_回溯法/分支限界法)
    问题描述设某一机器由n个部件组成,每一种部件都可以从m个不同的供应商处购得。设wij是从供应商j处购得的部件i的重量,cij是相应的价格。设计一个优先队列式分支限界法,给出总价格不超过d的最小重量机器设计。对于给定的机器部件重量和机器部件价格,设计一个优先队列式分......
  • C++面试八股文:如何在堆上和栈上分配一块内存?
    C++面试八股文:如何在堆上和栈上分配一块内存?某日二师兄参加XXX科技公司的C++工程师开发岗位6面:面试官:如何在堆上申请一块内存?二师兄:常用的方法有malloc,new等。面试官:两者有什么区别?二师兄:malloc是向操作系统申请一块内存,这块内存没有经过初始化,通常需要使用memset手......
  • 庞振坤:穷书生进京赶考,用一块破砖头搞到2000两银子,
    庞振坤:穷书生进京赶考,用一块破砖头搞到2000两银子, 庞振坤乃中原第一才子,爱打抱不平,戏弄为非作歹的恶霸。巧戏老王爷;信守承诺,为寺庙方丈写对联;连扬州八怪之首郑板桥也对此人赞口不绝,庞振坤的学识渊博,机智过人,随机应变都被他看在眼里,连称奇才,并写了副「难得糊涂」赠予庞振坤......