LeetCode 剑指 Offer 14- I. 剪绳子
题目描述

思路分析
解法一:贪心切 3(推荐)
核心思路:
- 当
n <= 3时,必须剪至少一刀,返回n - 1。- 尽量多切 3,可使乘积最大。
- 当剩余为 4 时,保留为
2 * 2更优。
复杂度分析:
- 时间复杂度:O(1),常数次运算。
- 空间复杂度:O(1),仅使用常数额外空间。
class Solution {
public int cuttingRope(int n) {
if (n <= 3) {
return n - 1;
}
long res = 1;
// 尽量多切 3
while (n > 4) {
res *= 3;
n -= 3;
}
return (int) (res * n);
}
}
func cuttingRope(n int) int {
if n <= 3 {
return n - 1
}
res := int64(1)
// 尽量多切 3
for n > 4 {
res *= 3
n -= 3
}
return int(res * int64(n))
}
相似题目
| 题目 | 难度 | 考察点 |
|---|---|---|
| 343. 整数拆分 | 中等 | 贪心/DP |
| 279. 完全平方数 | 中等 | 动态规划 |
| 650. 只有两个键的键盘 | 中等 | 质因数分解 |
| 96. 不同的二叉搜索树 | 中等 | 动态规划 |
| 464. 我能赢吗 | 中等 | 记忆化搜索 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!