目录

题目

解题

方法一、暴力法

方法二、数学法


题目

(原题链接:https://leetcode-cn.com/problems/water-bottles/)

小区便利店正在促销,用 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 瓶酒。

提示:

  • 1 <= numBottles <= 100
  • 2 <= numExchange <= 100

解题

方法一、暴力法

分析:直接模拟整个兑换过程,非常简单,看代码吧。

代码:(C++)

class Solution {
public:int numWaterBottles(int numBottles, int numExchange) {int bottle = numBottles;int res = numBottles;while (bottle >= numExchange) { // 说明还可以兑换bottle -= numExchange;// 每次兑换一个res++;bottle++;}return res;}
};

时间复杂度:O(n)。

空间复杂度:O(1)。

执行结果:

方法二、数学法

分析:首先我们有numBottles瓶酒,那么一定会得到numBottles个空瓶,其中每numExchange个空瓶兑换一瓶新酒,这样每次兑换其实是消耗了(numExchange-1)个酒瓶,因此可以转化为求公式(numBottles−n*(numExchange−1)≥numExchange)打破平衡的n值,那么 n= (numBottles - numExchange) / (numExchange - 1) + 1。注意:不存在赊账的情况,即 numBottles >= numExchange 才能兑换,不能在剩两个空瓶的时候,先借一个空瓶兑换一瓶喝完后再还。

代码:(C++)

class Solution {
public:int numWaterBottles(int numBottles, int numExchange) {return numBottles >= numExchange ? (numBottles - numExchange) / (numExchange - 1) + 1 + numBottles : numBottles;}
};

时间复杂度:O(1)。

空间复杂度:O(1)。

执行结果:

LeetCode之换酒问题(一千五百一十八)相关推荐

  1. 中文数字转换成阿拉伯数字(一千二百三十四万五千六百七十八-->12345678)

    昨天老大问我又没有写过中文数字转换成阿拉伯数字,我说没有,我说那应该简单啊,就是将中文对应的数字换成阿拉伯数字就好了啊,比如一就换成1,二就换成2-十换成10.可是那么问题来了- 一十二呢-不能是11 ...

  2. LeetCode 1518. 换酒问题

    目录结构 1.题目 2.题解 2.1模拟 2.2公式 1.题目 小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒.你购入了 numBottles 瓶酒. 如果喝掉了酒瓶中的酒, ...

  3. leetcode:1518.换酒问题

    题目 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/water-bottles 小区便利店正在促销,用 numExchange 个空酒瓶可以兑 ...

  4. leetcode 1518 换酒问题

    https://leetcode-cn.com/problems/water-bottles/ 题目 小区便利店正在促销,用numExchangenumExchangenumExchange个空酒瓶可 ...

  5. Leetcode 1518. 换酒问题 (经典数学问题,换汽水,从贪心思维模拟,到推公式)

    喝最多的策略就是只要满足条件,就换汽水喝) class Solution { public:int numWaterBottles(int numBottles, int numExchange) { ...

  6. 计算机论文一千五,研究生为一千五奖学金花七八千找期刊登论文

    3 "其实,每个人心里都有杆秤,大家心里都清楚,这些学生发表的论文,究竟是垃圾还是艺术品."一位不愿意透露姓名的上海大学法学院教师说. 在今年光华奖学金候选人公示时,这位老师也看过 ...

  7. LeetCode刷题进阶之换酒问题(1518)

    一.题目 演示示例: 二.测试代码 //方法一 数学 class Solution {public int numWaterBottles(int numBottles, int numExchang ...

  8. 一个价值一千五的外包项目!抓取大众点评的店铺信息!

    前言 今天在群里有人派外包的其中一个是抓取大众点评的店铺信息,价格一千五,三天内完成!很多刚学编程的小伙伴,应该觉得这个一千五也太容易拿了,相对于大众点评这个网站,其实不是像爬小说,爬表情包那样容易的 ...

  9. 鸿蒙之九大分身,正文 第两千五百四十一章 原来这就是鸿蒙之力(五更求花花)...

    正文 第两千五百四十一章 原来这就是鸿蒙之力(五更求花花) 作者:梦岂 更新时间:2019-02-25 19:27字数:7416字 巅峰强少有声小说,阅读悦在线收听! "你..." ...

最新文章

  1. JCIM | 用于自动生成类药分子的生成网络复合体(GNC)
  2. ASP.NET MVC (一)
  3. 我国法定报告的传染病分为几类?包括哪些传染病?
  4. hadoop目录命令
  5. BZOJ 1444 [JSOI2009]有趣的游戏 (AC自动机、概率与期望DP、矩阵乘法)
  6. php 文件写入磁盘错误,Linux磁盘读写故障的通常处理流程
  7. Oracle优化器:星型转换(Star Query Transformation )
  8. 【软件质量】软件可维护性
  9. 基础算法---二分查找
  10. 新增页和列表页遇到的坑
  11. dotnet new -i Microsoft.Maui.Templates
  12. Image Style Transfer:多风格 TensorFlow 实现
  13. Go 相关的框架,库和软件的精选清单
  14. Mysql基础(超详细)
  15. Aptana工具介绍
  16. php guzzle,php – 如何使用Guzzle 6记录所有API调用
  17. STM32驱动_cc2420
  18. python在哪里设置改成中文版_pycharm如何设置成中文
  19. ES6 -- 简单笔记总结
  20. Ai发展史(个人理解)梳理

热门文章

  1. 关于投篮的数学建模模型_数学建模投篮命中率的数学模型
  2. 超市购物消费清单打印的实现
  3. 水性拉伸油增稠剂的非离子性能分析
  4. java 文件预览_Java实现文件的预览
  5. 我的2022年,一位双非生的平淡一年
  6. http://36kr.com/p/5064568.html?ktm_source=feed
  7. 微信小程序 封装post请求 header加token code码拦截
  8. 大前端汇总,EMMET、HTML、XML、CSS、JS、dom4j、JDBC、DButil、 servlet、jsp、EL、JSTl、同步分页、filter、AJAX
  9. 职称计算机考试选什么模块,职称计算机考试如何选择模块?
  10. Vue+Three.js实现三维管道可视化及流动模拟