【LeetCode每日一题:1753. 移除石子的最大得分~~~贪心+优先队列】

leetcode提交超出时间限制-LeetCode:此挑战适合初学者,高级和非高级用户均可使用。它由4月份的30道日常问题组成。每天都会在这里 leetcode 外间隔时间限制介绍 此挑战适合初学者,高级和非高级用户均可使用。 它由 4 月份的 30 道日常问题组成。 每天都会在此处添加一个问题,您有 24 小时的时间对其进行有效提交,以便有资格获得奖励。 规则 为了有资格获得奖品,您必须遵守所有挑战规则。 有效提交:只有有效提交的问题才有资格获得奖励。 这意味着提交的是: a. 在该问题的有效期限内; 这是在出现当天太平洋时间下午 23:59 之前。 湾在此探索卡中制作。 如果您之前已完成该问题,则需要在此探索卡中重新提交答案。 C。 提交时判断为“已接受”。 请注意,如果您的提交收到不同的判断,包括但不限于错误答案或超出时间限制,只要仍在有效时间段内,您就可以重新提交。 d. 对问题进行有效提交后,左侧栏中该问题旁边会出现一个蓝色复选标记。 灰色十字表示该问题没有按时提交有效的提交,因此很遗憾,您不再有资格获得该问题的奖品。 迟交或无效提交:在任何情况下都不会被接受。 您有责任在问题的有效时间内对问题进行有效提交,并确认蓝色复选标记已出现。 奖励:只有有效提交才有资格获得奖励。 有关奖励的更多信息,请查看讨论帖子。 *免责 立即下载

题目描述

你正在玩一个单人游戏,面前放置着大小分别为 a​​​​​​、b 和 c​​​​​​ 的 三堆 石子。

每回合你都要从两个 不同的非空堆 中取出一颗石子,并在得分上加 1 分。当存在 两个或更多 的空堆时,游戏停止。

给你三个整数 a 、b 和 c ,返回可以得到的 最大分数 。

示例 1:

输入:a = 2, b = 4, c = 6
输出:6
解释:石子起始状态是 (2, 4, 6) ,最优的一组操作是:

  • 从第一和第三堆取,石子状态现在是 (1, 4, 5)
  • 从第一和第三堆取,石子状态现在是 (0, 4, 4)
  • 从第二和第三堆取,石子状态现在是 (0, 3, 3)
  • 从第二和第三堆取,石子状态现在是 (0, 2, 2)
  • 从第二和第三堆取,石子状态现在是 (0, 1, 1)
  • 从第二和第三堆取,石子状态现在是 (0, 0, 0)
    总分:6 分 。
    示例 2:

输入:a = 4, b = 4, c = 6
输出:7
解释:石子起始状态是 (4, 4, 6) ,最优的一组操作是:

  • 从第一和第二堆取,石子状态现在是 (3, 3, 6)
  • 从第一和第三堆取,石子状态现在是 (2, 3, 5)
  • 从第一和第三堆取,石子状态现在是 (1, 3, 4)
  • 从第一和第三堆取,石子状态现在是 (0, 3, 3)
  • 从第二和第三堆取,石子状态现在是 (0, 2, 2)
  • 从第二和第三堆取,石子状态现在是 (0, 1, 1)
  • 从第二和第三堆取,石子状态现在是 (0, 0, 0)
    总分:7 分 。
    示例 3:

输入:a = 1, b = 8, c = 8
输出:8
解释:最优的一组操作是连续从第二和第三堆取 8 回合,直到将它们取空。
注意,由于第二和第三堆已经空了,游戏结束,不能继续从第一堆中取石子。

提示:

1 <= a, b, c <= 105

求解思路

  1. 思路1:通过优先队列模拟过程,每次弹出俩个元素,结束的条件是中间的值为0。
  2. 思路2:贪心模拟+排序过程。

实现代码

实现代码1:优先队列

class Solution {
    public int maximumScore(int a, int b, int c) {
        PriorityQueue<Integer> queue = new PriorityQueue<>((o1, o2) -> o2.compareTo(o1));
        queue.add(a);
        queue.add(b);
        queue.add(c);
        int res = 0;
        while(true) {
            int max = queue.poll();
            int mid = queue.poll();
            if(mid == 0)
                break;
            res++;
            queue.add(--max);
            queue.add(--mid);
        }
        return res;
    }
}

实现思路2:贪心

class Solution {
    public int maximumScore(int a, int b, int c) {
        int[] arr=new int[]{a,b,c};
        Arrays.sort(arr);
        return arr[0]+arr[1]<arr[2]?arr[0]+arr[1]:(arr[0]+arr[1]+arr[2])/2;
    }
}

运行结果

在这里插入图片描述

leetcode第二题超出时间限制-leetcode-java:如题。还有Python版本,见repo:pythonalgr leetcode 第二题外时间限制leetcode-java 如题。 还有 Python 版本,请参阅 repo:pythonalgr。 Q5:最长回文子串。 结果:击败 32%。 时间复杂度:O(n*n),空间复杂度:O(1) 更好的解决方案? Q20:有效的括号 击败 30%。 不好。 时间复杂度:O(n)。 更好的办法? 遇到一些关于char <-> Character的问题(当Character为null时) Q22:待办事项 我的方式太丑了。 有更简洁有效的方法。 Q75:待办事项 时间复杂度:O(2n),空间复杂度:O(1) 仅优于 6% 第二个解决方案击败了 64%。 时间复杂度:O(n)。 空间复杂度:O(n)。 对于第二种解决方案,学到了: 关注目标结果:000011112222。从答案结构中推理出解决方案。 尝试从不同的角度看问题。 不同的观点可能会带来简单的解决方案。 Q94:待办事项 我的方法没问题。 Q148:待办事项。 链表基本操作:原地拆分成两半。 Sentinel 元素:当您想要将元素附加到列表时,使用假头来避免空检查。 使程序更清晰。 Q136:我尝试 立即下载

相关推荐

关于STM32编译报错:Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_md.o).

今天新建工程发现出现一个错误 —— …\Output\CG.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_md.o). 但我觉得我的操作没有任何问题,而且配置和上一个文件比较是一模一样的。 于是我开始百度查询,然后发现了下面几个博客—— @weixin_44133391——STM32 编译错误 @dorlolok——iel5 编译报错 error: L6235E: More than one

纯粹,学术,热爱。 9403

LeetCode 1753. 移除石子的最大得分(思维,或模拟)

题意: 你正在玩一个单人游戏,面前放置着大小分别为 a​​​​​​、b 和 c​​​​​​ 的 三堆 石子。 每回合你都要从两个 不同的非空堆 中取出一颗石子,并在得分上加 1 分。当存在 两个或更多 的空堆时,游戏停止。 给你三个整数 a 、b 和 c ,返回可以得到的 最大分数 。 数据范围: 1 <= a, b, c <= 105 解法: 设a<=b<=c。 当a+b<=c时,先选a和c,将a取完之后,c还是>=b的,此时只能取b次,答案为a+b。 当a

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2016

别只当玩具!聊聊这个555金属探测器电路背后的电磁感应与RLC调谐原理

本文深入解析了555金属探测器电路的工作原理,重点探讨了电磁感应与RLC调谐原理。通过分析电感线圈的电磁特性、RLC谐振电路的行为以及555定时器的多重功能,揭示了这一看似简单的装置如何实现金属检测。文章还提供了灵敏度优化方案和常见问题解决方法,帮助读者从科学角度理解这一实用技术。

weixin_29204205的博客 477

LeetCode 1753. 移除石子的最大得分(优先队列)

文章目录1. 题目2. 解题2.1 优先队列2.2 脑筋急转弯 1. 题目 你正在玩一个单人游戏,面前放置着大小分别为 a​​​​​​、b 和 c​​​​​​ 的 三堆 石子。 每回合你都要从两个 不同的非空堆 中取出一颗石子,并在得分上加 1 分。 当存在 两个或更多 的空堆时,游戏停止。 给你三个整数 a 、b 和 c ,返回可以得到的 最大分数 。 示例 1: 输入:a = 2, b = 4, c = 6 输出:6 解释:石子起始状态是 (2, 4, 6) ,最优的一组操作是: - 从第一和第三堆取,

Michael是个半路程序员 938

基于Active-HDL的HDL设计录入与仿真

作者:毛茏玮 / Saint 掘金:https://juejin.im/user/5aa1f89b6fb9a028bb18966a 微博:https://weibo.com/5458277467/profile?topnav=1&amp;wvr=6&amp;is_all=1 GitHub:github.com/saint-000 优快云: https://me.csdn.net/qq_4053...

一个会写代码的烤鸭 7782

cadence CIS 库建立--建立自己维护的CIS数据库

遇到一个问题,在使用cadecnce的时候,就是没有自己的本地/分享的数据库。 在画原理图或者PCB的时候,如果能搭建一个自己的数据库,在局域网或者本地 就好了。出于这样的想法,做了一些探索,找到了一种可能的答案。 由于数据库编制知识的缺乏,要自己建一个数据库似乎花费的时间会比较多。 偶发奇想,如果能够改编CIS 自带的数据库 另建立副本进行维护 就能够省下不少麻烦。 先说下CIS 是个啥。网上一搜:总之CIS 是个好东西。 功能强大。 点击CIS capture 中的 Options CIS Config

qq_29776365的博客 2万+

LeetCode[1753]移除石头的最大得分

解题为java语言,有源码,有讲解

月亮被咬碎成星星的博客 645

基于Codex平台构建AI技能:抖音爆款分析与带货视频生成实战

这次我们来看一个基于 Codex 平台构建 AI 技能(Skill)的实战项目。核心目标很直接:利用 AI 能力,自动化分析抖音平台的爆款内容,并生成可用于带货的视频。这听起来像是内容创作领域的“自动化流水线”,它解决的核心痛点是:人工分析爆款、撰写脚本、制作视频的效率瓶颈。 对于技术开发者和内容创作者而言,这个项目的价值在于将“内容策略分析”和“视频内容生成”两个环节通过 Codex 的 Skill 机制串联起来,形成一个可定制、可批量执行的自动化工作流。我们最关心的几个问题包括:这个方案的技术门槛高不高

weixin_29054399的博客 484

LeetCode 1793. 好子数组的最大分数【单调栈,双指针,数组;二分查找】1945

因此二者是等价的。

memcpy0的博客 542

基于Simplis仿真的UC2843芯片建模与关键参数优化指南

本文详细介绍了使用Simplis仿真工具为UC2843 PWM控制器进行行为级建模的方法与关键参数优化实践。通过精确搭建芯片内部振荡器、误差放大器及电流采样等核心模块,工程师可以深入理解其工作原理,并利用模型优化振荡频率、最大占空比及反馈环路等关键参数,从而提升开关电源设计的效率与可靠性。

efc1234567的博客 460

(project generation have a problem)STM32CubeMX生成工程一直报错项目生成有问题[玄学三步解]

解决办法 第一步,检查自己是不是真的配置的不对,JAVA安装没,pack路径设置的对不对,这里有一位前辈的博文写的非常好,附加链接https://blog.csdn.net/ybhuangfugui/article/details/52225736#commentBox 第二步,如果按照前辈的博文设置的都一模一样,还是不对,想我下图这样。 那你来对地方了 方法很简单,你把你生成工程文件的路径彻底的...

展桑博客-BenjieBlog 2922

1753. 移除石子的最大得分

本题虽然看似简单,但关键在于抽象游戏过程中的数学模型。每次操作都耗费两个石子,得 1 分,所以得分最多不会超过总石子数除以 2。如果最大那一堆石子远远多于其他两堆,那么游戏会提早结束,得分最多为其他两堆之和。最终答案是两种上限的较小者。

Lucy_wzw的博客 627

【Cadence 17.4实战】----- 基于MySQL与ODBC的企业级CIS数据库配置全攻略

本文详细介绍了如何在Cadence 17.4中配置基于MySQL与ODBC的企业级CIS数据库,提升硬件设计团队的元器件管理效率。通过实战案例和避坑指南,帮助读者掌握数据库部署、ODBC驱动配置及CIS参数映射等关键技巧,实现设计数据的实时同步与高效管理。

weixin_30591551的博客 327

leetcode 5839. 移除石子使总数最小(C++、java、python)

给你一个整数数组piles,数组下标从 0 开始,其中piles[i]表示第i堆石子中的石子数量。另给你一个整数k,请你执行下述操作恰好k次: 选出任一石子堆piles[i],并从中移除floor(piles[i] / 2)颗石子。 注意:你可以对同一堆石子多次执行此操作。 返回执行k次操作后,剩下石子的最小总数。 floor(x)为小于或等于x的最大整数。(即,对x向下取整)。 示例 1: 输入:piles = [5,4,...

qq_27060423的博客 293

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

leetcode超时?

在leetcode上做算法题目的时候为什么会超时?计算机究竟1s可以执行多少次操作? 文章目录在leetcode上做算法题目的时候为什么会超时?计算机究竟1s可以执行多少次操作?超时是怎么回事从硬件配置看计算机的性能测试实验完整测试代码总结 超时是怎么回事 大家在leetcode上练习算法的时候应该都遇到过一种错误是“超时”。也就是说程序运行的时间超过了规定的时间,一般OJ(online judge)的超时时间就是1s,也就是用例数据输入后最多要1s内得到结果,下文为了方便讲解,暂定超时时间就是1s

Leiroy的博客 8236

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Leetcode中你的代码执行之后显示超出时间限制

Leetcode中但凡是你的代码执行之后显示超出时间限制 比如: 那么必定是你写的代码不够完善甚至是还存在错误!

weixin_44980842的博客 5456

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

python | LeetCode笔记 | 超过时间限制的一些解决策略

以空间换时间

南瓜派三蔬 5860

LeetCode——1753. 移除石子的最大得分(Maximum Score From Removing Stones)[中等]——分析及代码(Java)

LeetCode——1753. 移除石子的最大得分[Maximum Score From Removing Stones][中等]——分析及代码[Java]一、题目二、分析及代码1. 模拟(1)思路(2)代码(3)结果2. 直接计算(1)思路(2)代码(3)结果三、其他 一、题目 你正在玩一个单人游戏,面前放置着大小分别为 a、b 和 c 的 三堆 石子。 每回合你都要从两个 不同的非空堆 中取出一颗石子,并在得分上加 1 分。当存在 两个或更多 的空堆时,游戏停止。 给你三个整数 a 、b 和 c ,返回

江南土豆的博客 875

【LeetCode】﹝堆ி﹞移除石子的最大得分,吃苹果的最大数目等

【LeetCode】﹝堆ி﹞移除石子的最大得分,吃苹果的最大数目等 文章目录【LeetCode】﹝堆ி﹞移除石子的最大得分,吃苹果的最大数目等移除石子的最大得分★★魔塔游戏★★吃苹果的最大数目★★合并K个升序链表★★★水位上升的泳池中游泳★★★ 移除石子的最大得分★★ 1753. 移除石子的最大得分 【题目】你正在玩一个单人游戏,面前放置着大小分别为 a、b 和 c 的 三堆 石子。 每回合你都要从两个 不同的非空堆 中取出一颗石子,并在得分上加 1 分。当存在 两个或更多 的空堆时,游戏停止。 给你三个整

像写诗一样优雅地写代码~ 1万+

LeetCode 1753. 移除石子的最大得分(贪心贪心)

1753. 移除石子的最大得分 你正在玩一个单人游戏,面前放置着大小分别为 a​​​​​​、b 和 c​​​​​​ 的 三堆 石子。 每回合你都要从两个 不同的非空堆 中取出一颗石子,并在得分上加 1 分。当存在 两个或更多 的空堆时,游戏停止。 给你三个整数 a 、b 和 c ,返回可以得到的 最大分数 。 示例 1: 输入:a = 2, b = 4, c = 6 输出:6 解释:石子起始状态是 (2, 4, 6) ,最优的一组操作是: - 从第一和第三堆取,石子状态现在是 (1, 4, 5) - 从第

qq_45260619的博客 1864

LeetCode:求移除石子的最大得分

You are playing a solitaire game with three piles of stones sizes a,b, and c respectively. Each turn you chooose two different non-empty piles,take one stone from each,and add 1 point to your score.The game stops when there are few than two-empty piles(me.

Jiangtagong的博客 389

[贪心][找规律]1753:移除石子的最大得分(medium)

题目: 题解: 贪心法,思路在代码里面。 代码如下: class Solution { public: // 贪心猜想:假设a<=b<=c // 1)a+b<c,那么a+b必定可以消耗完,剩余c里面还有多余的,a+b为拿走的最多石子了 // 2)a+b>=c,那么我们每次选2个最大的进行拿走,即先消耗c和b,然后等c消耗和a差不多大时,在消耗c和a,最后柱子中只会剩下1个或0个 // a+b+c 为奇数,则最后还剩下一个;为偶数时,则最后柱

algsup 618

移除石头得到最大得分Maximum Score From Removing Stones

文章目录移除石头得到最大得分Maximum Score From Removing Stones思路Tag 移除石头得到最大得分Maximum Score From Removing Stones 有3堆石子,大小分别为a,b,c 规则是每次只能从非空的2堆中各选一个,然后加1分。直到出现两个或者更多的空堆时,停止。 从给定的a,b,c,计算能得到的最大分数。 思路 3堆大小分别为min,mid,max, 为了得到最大的分数,需要一个方法,尽可能的利用最小的一堆,将较多的2堆消耗为一样的数量。这样最后min

Cui's Blog 299

一日一练:移除石子的最大得分

一日一练:移除石子的最大得分

qq_41494959的博客 521

移除石子的最大得分java

你正在玩一个单人游戏,面前放置着大小分别为 a​​​​​​、b 和 c​​​​​​ 的 三堆 石子。 每回合你都要从两个 不同的非空堆 中取出一颗石子,并在得分上加 1 分。当存在 两个或更多 的空堆时,游戏停止。 给你三个整数 a 、b 和 c ,返回可以得到的 最大分数 。 示例 1: 输入:a = 2, b = 4, c = 6 输出:6 解释:石子起始状态是 (2, 4, 6) ,最优的一组操作是: 从第一和第三堆取,石子状态现在是 (1, 4, 5) 从第一和第三堆取,石子状态现在是 (0, 4

weixin_43824233的博客 655

LeetCode题解(1753):移除石子的最大得分(Python)

题目:原题链接(中等) 标签:数学 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O(1)O(1)O(1) O(1)O(1)O(1) 44ms (63.52%) Ans 2 (Python) Ans 3 (Python) 解法一: class Solution: def maximumScore(self, a: int, b: int, c: int) -> int: a, b, c = sorted([a, b

长行 746
上一篇: 【55-分布式组件Skywalking基本概念-应用性能管理APM-SkyWalking环境搭建部署-Skywalking服务接入-Skywalking持久化-自定义SkyWalking链路】
下一篇: 【LeetCode每日一题:1799. N 次操作后的最大分数和~~~记忆化搜索+动态规划+状态压缩+最大公约数】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值