当前位置: 首页 > article >正文

数据结构与算法之栈: LeetCode 3100. 换水问题 II (Ts版)

换水问题 II

  • 给你两个整数 numBottles 和 numExchange 。

  • numBottles 代表你最初拥有的满水瓶数量。在一次操作中,你可以执行以下操作之一:

    • 喝掉任意数量的满水瓶,使它们变成空水瓶。
    • 用 numExchange 个空水瓶交换一个满水瓶。然后,将 numExchange 的值增加 1 。
  • 注意,你不能使用相同的 numExchange 值交换多批空水瓶。例如,如果 numBottles == 3 并且 numExchange == 1 ,则不能用 3 个空水瓶交换成 3 个满水瓶。

  • 返回你 最多 可以喝到多少瓶水。

示例 1

输入:numBottles = 13, numExchange = 6
输出:15

解释:上表显示了满水瓶的数量、空水瓶的数量、numExchange 的值,以及累计喝掉的水瓶数量

示例 2

输入:numBottles = 10, numExchange = 3
输出:13

解释:上表显示了满水瓶的数量、空水瓶的数量、numExchange 的值,以及累计喝掉的水瓶数量。

提示

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

Typescript 版算法实现


1 ) 方案1

function maxBottlesDrunk(numBottles: number, numExchange: number): number {
    let total = numBottles; 
    while (numBottles >= numExchange) { 
        // 每次喝完一瓶水后,会剩下一个空瓶,用空瓶交换新的水瓶
        numBottles += 1 - numExchange++; 
        total++; 
    }
    return total;
};

2 ) 方案2

function maxBottlesDrunk(numBottles: number, numExchange: number): number {
    let result = 0;
    // 空瓶子数量
    let emptyBottles = 0;
    // 标识:如果还有喝水/换水操作就继续再执行一次,直到无操作结束
    let flag = true;

    while (flag) {
        flag = false;

        // 喝水
        if (numBottles > 0) {
            result += numBottles;
            emptyBottles += numBottles;
            numBottles = 0;
            flag = true;
        }

        // 换水
        if (emptyBottles >= numExchange) {
            numBottles++;
            emptyBottles -= numExchange;
            numExchange++;
            flag = true;
        }
    }

    return result;
}

http://www.kler.cn/a/531397.html

相关文章:

  • 四川正熠法律咨询有限公司正规吗可信吗?
  • 25寒假算法刷题 | Day1 | LeetCode 240. 搜索二维矩阵 II,148. 排序链表
  • Lesson 127 A famous actress
  • 【Proteus】NE555纯硬件实现LED呼吸灯效果,附源文件,效果展示
  • 无人机集群新年祝福表演技术原理详解
  • 标准IO与文件IO 进程与线程
  • WebSocket——环境搭建与多环境配置
  • 玩转Docker | 使用Docker部署SSCMS内容管理系统
  • 技术架构师成长路线(2025版)
  • vue.js学习笔记
  • ARM TEE
  • 蓝桥杯备考:前缀和算法---模板题
  • Clojure语言的文件操作
  • SSH笔记
  • c++提取矩形区域图像的梯度并拟合直线
  • fflush的概念和使用案例
  • 汽车自动驾驶AI
  • FPGA 时钟拓扑结构建议
  • X Window System 架构概述
  • CommonJS
  • python 中的堆
  • LeetCode-182. 查找重复的电子邮箱
  • 基础篇04-图像的灰度值变换
  • 一份完整系统化提升信息输出密度与逻辑严谨性的训练素材
  • Github 2025-02-03 开源项目周报 Top14
  • 【开发和生产环境配置】