当前位置:   article > 正文

LeetCode - 移除石子使总数最小

LeetCode - 移除石子使总数最小

1962. 移除石子使总数最小

当我看到这道题目的时候,第一时间想到的是:while循环 + sort,时间复杂度 k*nlogn。题目要求执行k次操作后,剩下狮子的最小总数,我们是否可以考虑维护一个堆呢?堆顶值最大,只要对堆顶做操作就行了。

  1. class Solution {
  2. public:
  3. int minStoneSum(vector<int>& p, int k) {
  4. make_heap(p.begin(), p.end());
  5. while (k-- && p[0] != 1)
  6. {
  7. pop_heap(p.begin(), p.end());
  8. p.back() -= p.back() / 2;
  9. push_heap(p.begin(), p.end());
  10. }
  11. return accumulate(p.begin(), p.end(), 0);
  12. }
  13. };
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/365312
推荐阅读
相关标签
  

闽ICP备14008679号