LCP 06.拿硬币
【LetMeFly】LCP 06.拿硬币
力扣题目链接: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$个硬币,需要的最少次数为$\lceil \frac{n}2 \rceil$。
小技巧:$\lfloor\frac{n+1}2\rfloor=\lceil \frac{n}2 \rceil$
- 时间复杂度$O(len(coins))$
- 空间复杂度$O(1)$
AC代码
C++
1 |
|
Python
1 |
|
同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/133070027
LCP 06.拿硬币
https://blog.letmefly.xyz/2023/09/20/LeetCode LCP 06. 拿硬币/