美文网首页
LeetCode题解之拿硬币

LeetCode题解之拿硬币

作者: l1fe1 | 来源:发表于2020-07-13 22:49 被阅读0次

    统计位数为偶数的数字

    题目描述

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

    示例1 :

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

    示例2 :

    输入:[2,3,10]
    
    输出:8
    

    示例3 :

    输入:nums = [7,7,7,7]
    输出:[0,0,0,0]
    

    限制:

    • 1 <= n <= 4
    • 1 <= coins[i] <= 10

    解题思路

    从题意可知,每一堆硬币至少需要 (硬币数量 + 1) / 2 次才能拿完,因此迭代累加就能得到最终的结果。

    复杂度分析

    • 时间复杂度:O(n),其中 n 为数组 coins 的长度。
    • 空间复杂度:O(1)。

    代码实现

    class Solution {
        public int minCount(int[] coins) {
            int res = 0;
            for (int i = 0; i < coins.length; i ++) {
                res += ((coins[i] + 1) >> 1);
            }
            return res;
        }
    }  
    

    相关文章

      网友评论

          本文标题:LeetCode题解之拿硬币

          本文链接:https://www.haomeiwen.com/subject/aikthktx.html