剑指 Offer 14- I. 剪绳子

剑指 Offer 14- I. 剪绳子

链接

剑指 Offer 14- I. 剪绳子

思路

每次减去3

绳子段切分的越多,乘积越大,且3做因数比2更优。
不断剪去 长度3 并用sum累乘
把绳子切为多个长度为 3 的片段,则留下的最后一段绳子的长度可能为 0,1,2 三种情况。
循环结束的三种情况:
n=n-3-->2
n长度剩下2,因 n > 4 跳出循环,return 乘积为sum*2。
n=n-3-->3
长度刚好可以被剪完,因 n > 4 跳出循环,return 乘积为sum*3。
n=n-3-->4
再剪一次的话,长度剩下1,则最后一段绳子长度为 1; 需要把最后的 3 和 1 替换为 2 和 2,因为 2 * 2 > 3 * 1; 因次最后一段不减3,而是作为22即4,直接乘4, n > 4 跳出循环,return 乘积 sum4 即可。

代码

在这里插入图片描述

class Solution {
    public int cuttingRope(int n)
    {
        if (n == 1 || n == 2)
        {
            return 1;
        }
        if (3 == n)
        {
            return 2;
        }
        int ret = 1;
        while (n > 4)
        {
            ret *= 3;
            n -= 3;
        }
        return ret * n;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枳洛淮南✘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值