0
点赞
收藏
分享

微信扫一扫

[贪心]LCP 06. 拿硬币-简单

49路末班车 2022-07-12 阅读 50

​​LCP 06. 拿硬币​​

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

示例 1:

输入:[4,2,1]

输出:4

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

示例 2:

输入:[2,3,10]
输出:8

限制:

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


来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/na-ying-bi

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


题解

使用贪心解法,对于任意一堆的N个硬币,如果是偶数则需要N/2次取完,如果是基数则为(N)/2+1取完,但其实两种结果都是(N+1)/2。

代码如下:

class Solution
{
public:
int minCount(vector<int> &coins)
{
int n = 0;
for (auto x : coins)
{
n += (x + 1) / 2;
}
return n;
}
};

举报

相关推荐

0 条评论