桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。
class Solution {
public:
int minCount(vector<int>& coins) {
int counts = 0;
for(int i = 0; i < coins.size(); ++i){
counts += (coins[i] + 1) / 2;
}
return counts;
}
};
- 这个问题其实就是奇数和偶数的情况分别处理即可,考虑一个数x,如果是奇数,就要返回(x+1)/2
- 如果是偶数,则返回x/2。当然也可以合并,利用C语言整数除法是取下整的性质,可以都用(x+1)/2。