Sword14-II——剪绳子 II
方法1——贪心算法
- 思路:与上一题类似,只是结果需要使用long类型保存,并且需要对1000000007取模。因为int最大范围为21亿,而1e9+7为10亿,其乘以3的结果可能为30亿,超过了int最大范围。因此需要使用long类型保存,最后返回转换为int类型即可
- 特殊情况与临界分析:同上一题
- 终止条件:同上一题
- 步骤:同上一题
public int cuttingRope(int n) {
// n小于4的情况,返回n - 1
if (n < 4) {
return n - 1;
}
// 最后结果,long类型存储
long res = 1L;
// while循环
while (n > 4) {
// res乘以3
res = (res * 3) % 1000000007;
// n减去3
n -= 3;
}
// 返回结果,需要乘以最后的n
return (int)((res * n) % 1000000007);
}