剑指offer--14-II 剪绳子

Posted Anrys

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer--14-II 剪绳子相关的知识,希望对你有一定的参考价值。

剑指offer--14-II 剪绳子

题目

在这里插入图片描述

代码

和剪绳子I不同的是,此题涉及到大数运算,要么用BigInteger类要么如下代码所示根据数学原理尽可能接近3输出。

class Solution {
    public int cuttingRope(int n) {
        if(n < 4) return n - 1;
        long res = 1;
        while(n > 4){
            res  = res * 3 % 1000000007;
            n -= 3;
        }return (int) (res * n % 1000000007);
    }
}
import java.math.BigInteger;
class Solution {
    public int cuttingRope(int n) {
        BigInteger[] dp = new BigInteger[n + 1];
        Arrays.fill(dp, BigInteger.valueOf(1));
        for(int i = 2; i < n + 1; i++){
            for(int j = 1; j < i; j++){
                dp[i] = dp[i].max(BigInteger.valueOf(j * (i - j))).max(dp[i - j].multiply(BigInteger.valueOf(j)));
            }
        }
        return dp[n].mod(BigInteger.valueOf(1000000007)).intValue();
    }
}

结果

在这里插入图片描述

以上是关于剑指offer--14-II 剪绳子的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode]剑指 Offer 14- II. 剪绳子 II

剑指 Offer 14- II. 剪绳子 II

剑指 Offer 14- II. 剪绳子 II(数学推导,贪心)

乱序版 ● 剑指offer每日算法题打卡题解——分治算法(题号17,14)

LeetCode(剑指 Offer)- 14- I. 剪绳子

LeetCode(剑指 Offer)- 14- I. 剪绳子