剑指offer--14-II 剪绳子
Posted Anrys
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指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每日算法题打卡题解——分治算法(题号17,14)