跳到主要内容

LCP06.拿硬币

链接:LCP06.拿硬币
难度:Easy
标签:数组、数学
简介:桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。

题解 1 - cpp

  • 编辑时间:2023-09-20
  • 执行用时:4ms
  • 内存消耗:8.17MB
  • 编程语言:cpp
  • 解法介绍:遍历。
class Solution {
public:
int minCount(vector<int>& coins) {
int res = 0;
for (auto &coin : coins) res += ceil(1.0 * coin / 2);
return res;
}
};

题解 2 - python

  • 编辑时间:2023-09-20
  • 执行用时:40ms
  • 内存消耗:16MB
  • 编程语言:python
  • 解法介绍:同上。
class Solution:
def minCount(self, coins: List[int]) -> int:
return sum(ceil(coin / 2) for coin in coins)

题解 3 - rust

  • 编辑时间:2023-09-20
  • 内存消耗:2.3MB
  • 编程语言:rust
  • 解法介绍:同上。
impl Solution {
pub fn min_count(coins: Vec<i32>) -> i32 {
coins
.into_iter()
.map(|coin| (coin as f64 / 2.0).ceil() as i32)
.sum()
}
}