经典算法题剖析之拿硬币(二)

解决方案

题意概述

有 n 堆硬币,每次从任意一堆拿走一枚或者两枚。问最少几次能够全部拿完。

题解

题目中虽然给了 n 堆硬币,但是最终每一堆都是要拿完的。而每一堆拿的情况又不影响其他硬币堆,因此每一堆硬币的拿法实际上是互相独立的

于是我们可以只考虑一堆的情况。假设一堆有 x 枚硬币,既然我们的目的是尽早拿完所有硬币堆,那么两枚两枚的拿显然是更快的。

求单堆硬币最小次数:(x+1)//2

那么,拿完所有硬币堆只需要循环对所有硬币堆都计算一次,然后求和就可以了。

复制代码
class Solution:
    def minCount(self, coins: List[int]) -> int:
        return sum([(x+1)//2 for x in coins]
相关推荐
Elias不吃糖7 小时前
LeetCode每日一练(209, 167)
数据结构·c++·算法·leetcode
铁手飞鹰7 小时前
单链表(C语言,手撕)
数据结构·c++·算法·c·单链表
悦悦子a啊7 小时前
项目案例作业(选做):使用文件改造已有信息系统
java·开发语言·算法
小殊小殊7 小时前
【论文笔记】知识蒸馏的全面综述
人工智能·算法·机器学习
无限进步_8 小时前
C语言动态内存管理:掌握malloc、calloc、realloc和free的实战应用
c语言·开发语言·c++·git·算法·github·visual studio
im_AMBER8 小时前
AI井字棋项目开发笔记
前端·笔记·学习·算法
Wadli8 小时前
项目2 |内存池1|基于哈希桶的多种定长内存池
算法
TT哇8 小时前
【BFS 解决拓扑排序】3. ⽕星词典(hard)
redis·算法·宽度优先
橘颂TA8 小时前
【剑斩OFFER】算法的暴力美学——判定字符是否唯一
算法·c/c++·结构与算法
ModestCoder_8 小时前
PPO-clip算法在Gymnasium的Pendulum环境实现
人工智能·算法·机器人·具身智能