Skip to content

Commit 325d727

Browse files
committed
feat: add python and java solutions to lcof problem
添加《剑指 Offer》题解:面试题14- I. 剪绳子
1 parent 674f11d commit 325d727

File tree

3 files changed

+83
-0
lines changed

3 files changed

+83
-0
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# [面试题14- I. 剪绳子](https://leetcode-cn.com/problems/jian-sheng-zi-lcof/)
2+
3+
## 题目描述
4+
给你一根长度为 `n` 的绳子,请把绳子剪成整数长度的 `m` 段(m、n 都是整数,n>1 并且 m>1),每段绳子的长度记为 `k[0],k[1]...k[m]` 。请问 `k[0]*k[1]*...*k[m]` 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为 2、3、3 的三段,此时得到的最大乘积是 18。
5+
6+
**示例 1:**
7+
```
8+
输入: 2
9+
输出: 1
10+
解释: 2 = 1 + 1, 1 × 1 = 1
11+
```
12+
13+
**示例 2:**
14+
15+
```
16+
输入: 10
17+
输出: 36
18+
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36
19+
```
20+
21+
**提示:**
22+
23+
- `2 <= n <= 58`
24+
25+
## 解法
26+
### Python3
27+
```python
28+
class Solution:
29+
def cuttingRope(self, n: int) -> int:
30+
if n < 4:
31+
return n - 1
32+
s1, m = divmod(n, 3)
33+
if m == 1:
34+
s1 -= 1
35+
m = 4
36+
return pow(3, s1) * (1 if m == 0 else m)
37+
```
38+
39+
### Java
40+
```java
41+
class Solution {
42+
public int cuttingRope(int n) {
43+
if (n < 4) {
44+
return n - 1;
45+
}
46+
int s1 = n / 3;
47+
int m = n % 3;
48+
if (m == 1) {
49+
s1 -= 1;
50+
m = 4;
51+
}
52+
return (int) (Math.pow(3, s1) * ((m == 0) ? 1 : m));
53+
}
54+
}
55+
```
56+
57+
### ...
58+
```
59+
60+
```
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public int cuttingRope(int n) {
3+
if (n < 4) {
4+
return n - 1;
5+
}
6+
int s1 = n / 3;
7+
int m = n % 3;
8+
if (m == 1) {
9+
s1 -= 1;
10+
m = 4;
11+
}
12+
return (int) (Math.pow(3, s1) * ((m == 0) ? 1 : m));
13+
}
14+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution:
2+
def cuttingRope(self, n: int) -> int:
3+
if n < 4:
4+
return n - 1
5+
s1, m = divmod(n, 3)
6+
if m == 1:
7+
s1 -= 1
8+
m = 4
9+
return pow(3, s1) * (1 if m == 0 else m)

0 commit comments

Comments
 (0)