LeetCode - 1518 - 换酒问题 - java - 细节喔~

在这里插入图片描述

简单来说:就是我们买了 numBottles 瓶 冰阔乐(以前的那种玻璃瓶装的,现在一些小餐馆还有),店家告诉我们店里现在有活动,numExchange 个 空瓶子,可以换一瓶 冰阔乐,那我们肯定狂饮啊,几个人现场直播吹阔乐。 问最后,我们一共吹了多少瓶?我们又不是傻,我们去数嘛!嘻嘻。


由于题目很简单,我们直接上程序,我们主要目的是它的解题思维

============================================================================================

解法一



class Solution {

    public int numWaterBottles(int numBottles, int numExchange) {

        int drink = numBottles;// 记录喝了多少阔乐,刚开始买的可乐肯定拿来喝的,拿满的换,那不是zz???

        int isEmpty = numBottles;// 目前手上的空瓶,在我们眼里,这是不是一箱可乐,是一箱空瓶子!!

        while(isEmpty>=numExchange){// 当空瓶子不满足换酒条件时,跳出循环

            drink +=  isEmpty / numExchange;// 计算 手上的空瓶 可以换多少瓶阔乐,换到就是喝啊!肯定是不会让它活到明天滴!

            

            isEmpty =  isEmpty / numExchange + isEmpty%numExchange;

            // 空瓶换回来的阔乐,肯定是要喝完的!喝完了不就是空瓶了嘛! 再加上 手上还完,还 剩余 的 瓶子

            // 就是 第一轮下来,手上剩余的瓶子,年轻人喝阔乐还信怂的?不存在滴!

            // 拿着目前手上的瓶子,再继续换,继续吹!

        }

        // 此时 我们手上的瓶子,已经不足以换一瓶了,可乐party就此结束!

        return drink;

    }

}



在这里插入图片描述


解法二



class Solution {

    public int numWaterBottles(int numBottles, int numExchange) {

        int drink = numBottles;

        int isEmpty = numBottles;

        while(isEmpty>=numExchange){

            isEmpty -= numExchange;// 给老板 numExchange 个空瓶,我手上就少 numExchange 个空瓶子

            drink ++;// 给了老板瓶子,老板肯定是要给 阔乐,对不对?那么意味着又有一瓶阔乐要死我的嘴下!

            isEmpty++;// 它挂了。。  我手上原本不富裕的战利品又多了一个。。。

        }

        return drink;

    }

}



在这里插入图片描述


解法三


此解法是建立于 解法二的基础上,假设 每个2个空瓶子 就可以 换一瓶阔乐。也就是说我们手上少了2个空瓶子,多一瓶未开封的阔乐,但是这瓶阔乐喝完了,也就是一个空瓶子,也就是 我手上 又多了一个空瓶!也就是说 我们其实就给了老板一个空瓶子。也就是说 numExchange -1 个瓶子就能得到一瓶阔乐。

解法三就是按照这中思维去解决大的!(如果此时我向老板借一个瓶子,我能不能无限卡bug。。。。)

解法三是运用了递归思想,其实更为严格来说:是运用数学的方面的知识

在这里插入图片描述


代码


class Solution {

    public int numWaterBottles(int numBottles, int numExchange) {

        return numBottles >= numExchange ? (numBottles -numExchange)/(numExchange-1)+1+numBottles: numBottles;

        // 冒号的返回 numBottles 是因为你钱少了,不对,是买少了。。。

    }
LeetCode-Editor是一种在线编码工具,它提供了一个用户友好的界面编写和运行代码。在使用LeetCode-Editor时,有时候会出现乱码的问题。 乱码的原因可能是由于编码格式不兼容或者编码错误导致的。在这种情况下,我们可以尝试以下几种解决方法: 1. 检查文件编码格式:首先,我们可以检查所编辑的文件的编码格式。通常来说,常用的编码格式有UTF-8和ASCII等。我们可以将编码格式更改为正确的格式。在LeetCode-Editor中,可以通过界面设置或编辑器设置来更改编码格式。 2. 使用正确的字符集:如果乱码是由于使用了不同的字符集导致的,我们可以尝试更改使用正确的字符集。常见的字符集如Unicode或者UTF-8等。在LeetCode-Editor中,可以在编辑器中选择正确的字符集。 3. 使用合适的编辑器:有时候,乱码问题可能与LeetCode-Editor自身相关。我们可以尝试使用其他编码工具,如Text Editor、Sublime Text或者IDE,看是否能够解决乱码问题。 4. 查找特殊字符:如果乱码问题只出现在某些特殊字符上,我们可以尝试找到并替换这些字符。通过仔细检查代码,我们可以找到导致乱码的特定字符,并进行修正或替换。 总之,解决LeetCode-Editor乱码问题的方法有很多。根据具体情况,我们可以尝试更改文件编码格式、使用正确的字符集、更换编辑器或者查找并替换特殊字符等方法来解决这个问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值