文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个整数数组 piles ,数组 下标从 0 开始 ,其中 piles[i] 表示第 i 堆石子中的石子数量。
另给你一个整数 k ,请你执行下述操作 恰好 k 次

选出任一石子堆 piles[i] ,并从中 移除 floor(piles[i] / 2) 颗石子。
注意:你可以对 同一堆 石子多次执行此操作。

返回执行 k 次操作后,剩下石子的 最小 总数

floor(x) 为 小于 或 等于 x 的 最大 整数。(即,对 x 向下取整)。

示例 1:
输入:piles = [5,4,9], k = 2
输出:12
解释:可能的执行情景如下:
- 对第 2 堆石子执行移除操作,石子分布情况变成 [5,4,5] 。
- 对第 0 堆石子执行移除操作,石子分布情况变成 [3,4,5] 。
剩下石子的总数为 12 。示例 2:
输入:piles = [4,3,6,7], k = 3
输出:12
解释:可能的执行情景如下:
- 对第 2 堆石子执行移除操作,石子分布情况变成 [4,3,3,7] 。
- 对第 3 堆石子执行移除操作,石子分布情况变成 [4,3,3,4] 。
- 对第 0 堆石子执行移除操作,石子分布情况变成 [2,3,3,4] 。
剩下石子的总数为 12 。提示:
1 <= piles.length <= 10^5
1 <= piles[i] <= 10^4
1 <= k <= 10^5

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

2. 解题

  • 优先队列,总是拿剩余最多的一堆
class Solution {public:int minStoneSum(vector<int>& piles, int k) {priority_queue<int> q(piles.begin(), piles.end());while(k--){int w = q.top();if(w == 1)return q.size();q.pop();q.push(w-w/2);}int ans = 0;while(!q.empty()){ans += q.top();q.pop();}return ans;}
};

524 ms 96.5 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1962. 移除石子使总数最小(优先队列)相关推荐

  1. 1962 移除石子使总数最小

    题目描述: 给你一个整数数组 piles ,数组 下标从 0 开始 ,其中 piles[i] 表示第 i 堆石子中的石子数量.另给你一个整数 k ,请你执行下述操作 恰好 k 次: 选出任一石子堆 p ...

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

    文章目录 1. 题目 2. 解题 2.1 优先队列 2.2 脑筋急转弯 1. 题目 你正在玩一个单人游戏,面前放置着大小分别为 a​​​​​​.b 和 c​​​​​​ 的 三堆 石子. 每回合你都要从 ...

  3. lrange是取出所有值并移除么_图解双指针 | LeetCode 27. 移除元素

    题目描述 原题链接:LeetCode 27. 移除元素 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在 ...

  4. 【LeetCode】1631. Path With Minimum Effort 最小体力消耗路径(Medium)(JAVA)每日一题

    [LeetCode]1631. Path With Minimum Effort 最小体力消耗路径(Medium)(JAVA) 题目描述: You are a hiker preparing for ...

  5. LeetCode 2058. 找出临界点之间的最小和最大距离

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   链表中的 临界点 定义 ...

  6. 石子游戏:移除石子价值总和能被三整除则输

    本篇文章实为分享: A 和 B 再次设计了一款新的石子游戏.现有一行 n 个石子,每个石子都有一个关联的数字表示它的价值.给你一个整数数组 stones ,其中 stones[i] 是第 i 个石子的 ...

  7. 最小堆以及最小优先队列的实现

    最小堆的实现 什么是最小堆 构建最小堆 MIN_HEAPITY的实现 MIN_HEAPIFY的时间复杂度分析 BUILD_MIN_HEAP的实现 建最小堆的时间复杂度分析 什么是最小堆 最小堆从逻辑上 ...

  8. 优先队列(最小优先队列)

    优先队列(最小优先队列) 前言 普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除.在某些情况下,我们可能需要找出队列中的最大值或者最小值,例如使用一个队列保存计算机的任务,一般情况 ...

  9. 最小堆实现最小优先队列

    最小优先队列的可以实现的操作: insert,插入一个元素 min,找到最小的元素 extract-min,去掉最小的元素并返回最小的元素 increase-key,增加一个关键字的值 优先队列的形式 ...

最新文章

  1. mysql附件卸载_彻底卸载mysql
  2. DCMTK:转换DICOM彩色图像调色板的颜色
  3. SAP 电商云 Spartacus UI 回归测试 b2b-replenishment-checkout-flow.core-e2e-spec.ts
  4. Directx11教程(55) 建立球形和锥形物体
  5. python决策树 value_机器学习 | 算法笔记(四)- 决策树算法以及代码实现
  6. swift学习笔记之一——初见swift
  7. 大数据系统由哪些核心组件构成
  8. H264/H265/YUV码流分析工具推荐(一)
  9. 比特币工作量证明,“法外之地”的法
  10. arcgis_spatialjoin
  11. 动易和php,国内主流CMS对比之织梦内容管理系统VS动易
  12. qq互联android sdk,QQ互联API列表 - YangJunwei
  13. 21克c1语言,C1人称代词
  14. AcWing 导弹防御系统 Python代码
  15. 会计凭证、成本中心、成本要素、总账、物料标准成本核算
  16. 微信小程序3天刷量开流量主
  17. Write-Ahead Log(WAL)的工作原理
  18. Fisher information解释和数学意义
  19. 数学分析里面的蕴含(⇒)到底是什么意思
  20. C语言中如何输出一些特殊的字符

热门文章

  1. soap接口怎么不返回tuple python_Python 中的接口
  2. python 内置模块 subprocess
  3. python网络爬虫面试题,搞定这套Python爬虫面试题(面试会so easy)
  4. python compare excel_python简单操作excle的方法
  5. unity塔防游戏怪物转向_Unity官方新手游戏项目推荐合集
  6. Hive2.1.1的安装教程(元数据放在本地Mysql)
  7. amd cpu不能在cmd环境下运行java代码_「我们一起学Java02」JDK、JRE、JVM简介,Java开发平台的搭建...
  8. 物理机安装ESXI6.7提示No Network Adapters的解决方案
  9. 实战 SQL Server 2008 数据库误删除数据的恢复 (转)
  10. SQL Server 2005之PIVOT/UNPIVOT行列转换(转)