描述

桌上有 ​​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;
    }
};