Leetcode LCP06.拿硬币

本文最后更新于:2023年12月15日 晚上

题目描述

题目:拿硬币

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

示例 1:

输入:[4,2,1]

输出:4

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

示例 2:

输入:[2,3,10]

输出:8

解题思路

这时候得分开两种情况讨论

如果f[i]<2 则算1次

如果f[i]>=2则算 f[i] / 2 + f[i] % 2

示例代码

Python3

1
2
3
4
5
6
7
8
9
class Solution:
def minCount(self, coins: List[int]) -> int:
ans = 0
for i in range(0,len(coins)):
if coins[i] < 2:
ans+=1
else:
ans += coins[i] // 2 + coins[i] % 2
return ans

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
int minCount(vector<int>& coins) {
int a = 0;
for(int i = 0; i < coins.size(); i++){
if(coins[i] < 2){
a++;
}else{
a+=(coins[i]/2 + coins[i] % 2);
}
}
return a;
}
};

w


Leetcode LCP06.拿硬币
http://blog.bingyue.top/2023/03/31/LCP06/
作者
bingyue
发布于
2023年3月31日
许可协议