zoukankan      html  css  js  c++  java
  • 刷题力扣1518. 换酒问题

    题目链接

    来源:力扣(LeetCode)
    链接: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 瓶酒。
    

    示例 3:

    输入:numBottles = 5, numExchange = 5
    输出:6
    

    示例 4:

    输入:numBottles = 2, numExchange = 3
    输出:2
    

    提示:

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

    题目分析

    1. 根据题目描述,当numExchange个空瓶子可以换一瓶酒的时候,计算拥有numBottles瓶酒最多可以喝到多少瓶
    2. 使用贪心的思想,先喝掉numBottles瓶酒,此时就拥有numBottles+上次兑换剩下的空瓶子个空瓶子
    3. 一次执行步骤2就得到最多可以喝到的酒数
    4. 边界条件第一次进行空酒瓶兑换的时候,上一次兑换剩余的空瓶子数为0

    代码

    class Solution {
        public int numWaterBottles(int numBottles, int numExchange) {
            return numWaterBottles(numBottles, numExchange, 0);
        }
    
        private int numWaterBottles(int numBottles, int numExchange, int nullBottles) {
            int bottles = numBottles + nullBottles;
            if (bottles < numExchange) return numBottles;
            return numBottles + numWaterBottles(bottles / numExchange, numExchange, bottles % numExchange);
        }
    }
    
  • 相关阅读:
    Silverlight 控件绑定到对象
    开源编辑器Makedown的安装
    ASP.NET 4 和 Visual Web Developer 中的新增功能
    空间新闻模块CSS
    P2P之王者电骡Emule技术分析
    QQ向陌生人聊天的autoit脚本
    Er 一个开源游戏的诞生
    一个不错的源代码语法高亮插件dp.SyntaxHighlighter
    Aut2Exe编译au3脚本为可执行文件
    模拟:悬停和纯双点击移动设备的CSS
  • 原文地址:https://www.cnblogs.com/HanYG/p/15701515.html
Copyright © 2011-2022 走看看