力扣题目链接:https://leetcode.cn/problems/na-ying-bi/
桌上有 n
堆力扣币,每堆的数量保存在数组 coins
中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。
示例 1:
输入:
[4,2,1]
输出:4
解释:第一堆力扣币最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,总共 4 次即可拿完。
示例 2:
输入:
[2,3,10]
输出:8
限制:
1 <= n <= 4
1 <= coins[i] <= 10
每次能拿1或2枚硬币,那肯定是尽可能地多拿。对于一堆 n n n个硬币,需要的最少次数为 ⌈ n 2 ⌉ \lceil \frac{n}2 \rceil ⌈2n⌉。
小技巧: ⌊ n + 1 2 ⌋ = ⌈ n 2 ⌉ \lfloor\frac{n+1}2\rfloor=\lceil \frac{n}2 \rceil ⌊2n+1⌋=⌈2n⌉
class Solution {
public:
int minCount(vector<int>& coins) {
int ans = 0;
for (int t : coins) {
ans += (t + 1)/ 2;
}
return ans;
}
};
# from typing import List
class Solution:
def minCount(self, coins: List[int]) -> int:
return sum((i + 1) // 2 for i in coins)
同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/133070027