剑指offer 13. 剪绳子

简介: 剑指offer 13. 剪绳子

题目描述


给你一根长度为 n nn 绳子,请把绳子剪成 m mm 段(m mm、n nn 都是整数,2 ≤ n ≤ 58 2≤n≤582≤n≤58 并且 m ≥ 2 m≥2m≥2)。


每段的绳子的长度记为 k [ 1 ] 、 k [ 2 ] 、 … … 、 k [ m ] k[1]、k[2]、……、k[m]k[1]、k[2]、……、k[m]。


k [ 1 ] , k [ 2 ] , … , k [ m ] k[1],k[2],…,k[m]k[1],k[2],…,k[m] 可能的最大乘积是多少?


例如当绳子的长度是 8 88 时,我们把它剪成长度分别为 2 22、3 33、3 33 的三段,此时得到最大的乘积 18 1818。

样例

输入:8
输出:18


方法一:数学 O(n)


1.png

class Solution {
public:
    int maxProductAfterCutting(int length) {
        if (length <= 3)   return length - 1;
        int res = 1;
        //将lenght变成3的倍数
        if (length % 3 == 2) res = 2, length -= 2;
        if (length % 3 == 1) res = 4, length -= 4;  //两个2相乘
        while (length)   res *= 3, length -= 3;
        return res;
    }
};




欢迎大家在评论区交流~

目录
相关文章
【剑指offer】-矩形覆盖-10/67
【剑指offer】-矩形覆盖-10/67
|
2月前
|
容器
每日一题——接雨水(单调栈)
每日一题——接雨水(单调栈)
|
2月前
代码随想录Day29 贪心04 LeetCode T860 柠檬水找零 T406 根据身高重建队列 T452 用最少得箭引爆气球
代码随想录Day29 贪心04 LeetCode T860 柠檬水找零 T406 根据身高重建队列 T452 用最少得箭引爆气球
29 0
|
2月前
leetcode-419:甲板上的战舰
leetcode-419:甲板上的战舰
24 0
|
存储
剑指Offer - 面试题14:剪绳子
剑指Offer - 面试题14:剪绳子
63 0
|
C++
【LeetCode343】剪绳子(动态规划)
(1)确定状态 dp[i]是将正整数i拆成2个及其以上的正整数后,求所有数的乘积值。
119 0
【LeetCode343】剪绳子(动态规划)
|
算法 图计算 C++
每日算法系列【LeetCode 42】接雨水
每日算法系列【LeetCode 42】接雨水
LeetCode每日一题(11)——太平洋大西洋水流问题(递归,深度优先遍历实例)
大西洋太平洋水流问题 1.题目 2.示例 3.思路 理解题目 解题思路 4.代码
118 0
LeetCode每日一题(11)——太平洋大西洋水流问题(递归,深度优先遍历实例)
|
定位技术
宝岛探险(求岛屿大小,染色法) 宽搜 深搜
宝岛探险(求岛屿大小,染色法) 宽搜 深搜
宝岛探险(求岛屿大小,染色法) 宽搜 深搜