欢迎光临散文网 会员登陆 & 注册

C语言——拿硬币(力扣2020春季周赛题)

2022-09-09 21:51 作者:新新无所畏惧  | 我要投稿

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

示例 1:

输入:[4,2,1]

输出:4

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

示例 2:

输入:[2,3,10]

输出:8

限制:

1 <= n <= 4

1 <= coins[i] <= 10

解题思路:直接依次遍历每一堆硬币,拿走一或者二枚硬币,即分为偶数和奇数,偶数直接除以2加入count内,奇数则除以2再加上1即可。

代码:

int minCount(int* coins, int coinsSize){

    int count=0;

    int i;

    for(i=0;i<coinsSize;i++)

    {

        while(coins[i]!=0)

        {

            if(coins[i]%2==0)

            {   

                count+=coins[i]/2;

                coins[i]=0;

            }

            if(coins[i]%2!=0)

            {

                count+=coins[i]/2+1;

                coins[i]=0;

            }

        }

    }

    return count;

}


C语言——拿硬币(力扣2020春季周赛题)的评论 (共 条)

分享到微博请遵守国家法律