JavaScript 汽水瓶最大可喝瓶数「借瓶子」🍾

汽水瓶

https://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f

算法思路

在这道题中,关键在于如何利用空瓶数换汽水,并且考虑到特殊规则:剩下2个空瓶时可以借瓶子换1瓶汽水。我们可以用以下思路来求解:

  1. 基本规则:每3个空瓶可以换1瓶汽水。
  2. 特殊规则:当剩下2个空瓶时,可以借1个空瓶,凑成3个空瓶继续换1瓶汽水。喝完之后手里没有空瓶。
  3. 换汽水的核心思想:每2个空瓶都能换1瓶汽水。因此,求解过程就是直接把空瓶数除以2来得到最大可以喝到的汽水瓶数。

Code

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

// 主函数
void async function () {
    let line;  // 存储每次输入的空瓶数量
    while (true) {
        line = await readline();  // 读取每行输入
        if (line === '0') break;  // 如果输入为 0,结束输入并退出

        if (line !== '0') {
            // 直接输出空瓶数除以2的结果
            console.log(Math.floor(parseInt(line) / 2));
        }
    }
}();

复杂度分析

  • 时间复杂度:由于每次输入只进行一次整数除法运算,时间复杂度为 O(1)
  • 空间复杂度:程序只使用了常数级别的空间,空间复杂度为 O(1)
全部评论

相关推荐

06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
实习吐槽大会
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务