【LeetCode】LCP 06. 拿硬币


题目地址:https://leetcode-cn.com/problems/na-ying-bi/

题目描述

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

示例 1:

输入:[4,2,1]

输出:4

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

示例 2:

输入:[2,3,10]

输出:8

限制:

  1. 1 <= n <= 4
  2. 1 <= coins[i] <= 10

题目大意

我们每次只能拿走某一堆中的1或者2个硬币,多少次能拿完。

解题方法

替换

示例1题目已经讲清楚了,示例2中:第一堆需要1次,第二堆需要拿2次,第三堆需要拿5次,总共需要8次拿完。

每堆被拿完的次数是coins[i]除以2并且向上取整。

用数学就是(coins[i] + 1) / 2

Python代码如下:

class Solution:
    def minCount(self, coins: List[int]) -> int:
        return sum((c + 1) // 2 for c in coins)

欢迎关注负雪明烛的刷题博客,leetcode刷题800多,每道都讲解了详细写法!

日期

2020 年 4 月 18 日 —— 个人赛蒙了

posted @ 2020-04-18 22:29  负雪明烛  阅读(37)  评论(0编辑  收藏  举报