描述

桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。

示例

输入:[4,2,1]

输出:4

解释:第一堆力扣币最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,总共 4 次即可拿完。

限制

  • 1 <= n <= 4
  • 1 <= coins[i] <= 10

思路

这道题目思路很好梳理,每一堆里面的情况只有两种,如果有一个,那就拿一个;如果超过一个,那就拿总个数/2+总个数%2个硬币

感谢力扣每日一题,知道我开始复健送我一道题秒了找回信心qaq

代码

class Solution {
public:
    int minCount(vector<int>& coins) {
        int ans=0;
        for(auto c: coins){
            int tmp = c/2==0?1:c/2+c%2;
            //cout<<tmp<<endl;
            ans+=tmp;
        }
        return ans;
    }
};