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
原站题解
rust 解法, 执行用时: 0 ms, 内存消耗: 2.2 MB, 提交时间: 2023-09-20 09:25:05
impl Solution { pub fn min_count(coins: Vec<i32>) -> i32 { let mut sum:i32 = 0; for i in 0..coins.len() { sum += (coins[i] + 1) / 2; } return sum; } }
c 解法, 执行用时: 4 ms, 内存消耗: 6 MB, 提交时间: 2023-09-20 07:51:12
int minCount(int* coins, int coinsSize){ int sum = 0; for (int i = 0; i < coinsSize; i++) { sum += (coins[i] + 1) / 2; } return sum; }
javascript 解法, 执行用时: 60 ms, 内存消耗: 40.9 MB, 提交时间: 2023-09-20 07:50:55
/** * @param {number[]} coins * @return {number} */ var minCount = function(coins) { let sum = 0; for (let i = 0; i < coins.length; i++) { sum += parseInt((coins[i] + 1) / 2); } return sum; };
cpp 解法, 执行用时: 4 ms, 内存消耗: 8.3 MB, 提交时间: 2023-09-20 07:50:40
class Solution { public: int minCount(vector<int>& coins) { int sum = 0; for (int& i : coins) { sum += (i + 1) / 2; } return sum; } };
java 解法, 执行用时: 0 ms, 内存消耗: 39 MB, 提交时间: 2023-09-20 07:50:11
class Solution { public int minCount(int[] coins) { int res = 0; for( int v: coins ) { res += (v+1)/2; } return res; } }
php 解法, 执行用时: 8 ms, 内存消耗: 18.9 MB, 提交时间: 2023-09-20 07:49:36
class Solution { /** * @param Integer[] $coins * @return Integer */ function minCount($coins) { $res = 0; foreach ( $coins as $v ){ $res += intval(($v+1)/2); } return $res; } }
golang 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2020-11-05 10:38:09
func minCount(coins []int) int { var res int for _,v := range coins{ res += (v+1)/2 } return res }
python3 解法, 执行用时: 44 ms, 内存消耗: 13.5 MB, 提交时间: 2020-11-05 10:33:54
class Solution: def minCount(self, coins: List[int]) -> int: return sum([math.ceil(x/2) for x in coins])