题目

小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒。你购入了 numBottles 瓶酒。
如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。
请你计算 最多 能喝到多少瓶酒。
示例 1:

输入:numBottles = 9, numExchange = 3
输出:13
解释:你可以用 3 个空酒瓶兑换 1 瓶酒。
所以最多能喝到 9 + 3 + 1 = 13 瓶酒。
示例 2:

输入:numBottles = 15, numExchange = 4
输出:19
解释:你可以用 4 个空酒瓶兑换 1 瓶酒。
所以最多能喝到 15 + 3 + 1 = 19 瓶酒。
示例 3:
输入:numBottles = 5, numExchange = 5
输出:6
示例 4:
输入:numBottles = 2, numExchange = 3
输出:2
提示:
1 <= numBottles <= 100
2 <= numExchange <= 100
来源:力扣(LeetCode)

解题思路

  对于这类集卡换物的问题,我们可以定义一次操作为用整数倍的酒换取一定量的酒,剩下的酒和换取的酒再做一次操作,循环往复,直到最后换不了酒了,那么最后剩下的酒加上前面所有整数倍的酒就是总酒量。例如:示例2,一开始有15瓶,我们先喝上12瓶剩下的3瓶和换取的3瓶一共是6瓶,在这6瓶里,我们再喝上它4瓶,剩下的1瓶和换取的1瓶最后喝。

class Solution:def numWaterBottles(self, numBottles: int, numExchange: int) -> int:s=0while numBottles>=numExchange:a,b=divmod(numBottles,numExchange) #a为能换取的瓶数,b为余下的瓶数是要放到下一次一起兑换的s+=a*numExchange  #喝上整数倍的瓶数numBottles=a+b   #余下的瓶和换取的瓶数作为下一次操作的开端return s+numBottles  #最后换不了一瓶的瓶和整数倍的瓶加起来

LeetCode简单题之换酒问题相关推荐

  1. LeetCode简单题之基于排列构建数组

    题目 给你一个 从 0 开始的排列 nums(下标也从 0 开始).请你构建一个 同样长度 的数组 ans ,其中,对于每个 i(0 <= i < nums.length),都满足 ans ...

  2. LeetCode简单题之Excel 表中某个范围内的单元格

    题目 Excel 表中的一个单元格 (r, c) 会以字符串 "" 的形式进行表示,其中: 即单元格的列号 c .用英文字母表中的 字母 标识. 例如,第 1 列用 'A' 表示, ...

  3. LeetCode简单题之有多少小于当前数字的数字

    题目 给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目. 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i ...

  4. LeetCode简单题之增量元素之间的最大差值

    题目 给你一个下标从 0 开始的整数数组 nums ,该数组的大小为 n ,请你计算 nums[j] - nums[i] 能求得的 最大差值 ,其中 0 <= i < j < n 且 ...

  5. LeetCode简单题之二进制矩阵中的特殊位置

    题目 给你一个大小为 rows x cols 的矩阵 mat,其中 mat[i][j] 是 0 或 1,请返回 矩阵 mat 中特殊位置的数目 . 特殊位置 定义:如果 mat[i][j] == 1 ...

  6. LeetCode简单题之设计 Goal 解析器

    题目 请你设计一个可以解释字符串 command 的 Goal 解析器 .command 由 "G"."()" 和/或 "(al)" 按某种 ...

  7. LeetCode简单题之检查两个字符串数组是否相等

    题目 给你两个字符串数组 word1 和 word2 .如果两个数组表示的字符串相同,返回 true :否则,返回 false . 数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串. ...

  8. LeetCode简单题之找出数组的最大公约数

    题目 给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 . 两个数的 最大公约数 是能够被两个数整除的最大正整数. 示例 1: 输入:nums = [2,5,6,9,10] 输出: ...

  9. LeetCode简单题之排列硬币

    题目 你总共有 n 枚硬币,并计划将它们按阶梯状排列.对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币.阶梯的最后一行 可能 是不完整的. 给你一个数字 n ,计算并返回可形成 完整阶 ...

最新文章

  1. numpy.array()基本操作
  2. 全 球 最 老 金 鱼 病 逝
  3. Win7如何快速打开命令提示符
  4. 闲鱼靠什么支撑起万亿的交易规模?| 云原生Talk
  5. 《Linux与unix Shell编程指南》 总结
  6. CXF wsdl2Java
  7. 学习记录-Linux图形栈:基于DRM和Wayland
  8. IOS开发之JSON序列化从客户端发送到服务器端
  9. 字体样式及其属性、文本外观属性
  10. (1.2)mysql 索引概念
  11. Java笔记(韩顺平Java基础1-2章)
  12. JAVA毕业设计河南省农村多元化养老服务管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库
  13. 软考高级系统架构设计师你想知道的全在这
  14. pmap anon 内存泄露
  15. 独立性与互不相容的区别
  16. 字节跳动面试题汇总 -- C++后端(含答案)
  17. 编写程序计算两个矩阵之和。
  18. 【jieba获取关键词】
  19. 2018秋招前端笔试题(58同城)
  20. 包头钢铁职业技术学院题库计算机,计算机-包头钢铁职业技术学院.DOC

热门文章

  1. ECS(Linux)连接RDS,使用命令行方式连接实例
  2. Maven安装与配置(最实用!!!)eclipse中配置maven
  3. 2021-2027年中国透明导电膜玻璃行业市场研究及前瞻分析报告
  4. Ubuntu 16.04 安装 PyInstaller
  5. GCC 连接器、链接标准库 gcc -l、链接手动创建库(指定目录的库 gcc -L)
  6. 将文件名和文件修改时间批量输出至Excel中
  7. Python多线程(3)——Queue模块
  8. bootstrap上传文件美化
  9. 多尺度注意力机制的语义分割
  10. HarmonyOS 查看本地API