浅谈 拿硬币 问题

拿硬币

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

思路:
遍历数组中每一个元素,如果是偶数就每次拿两枚,结果为 n / 2.如果是奇数拿的次数就相当于前面每次拿两枚,最后一次拿一枚,结果为 (n + 1) / 2。

class Solution {
    
    
public:
    int minCount(const vector<int>& coins) {
    
    
        int count = 0;
        for(auto& i : coins){
    
    
            if(i % 2 == 0) count += i / 2;
            else count += (i + 1) / 2; 
        }
        return count;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_48033173/article/details/112702531