美文网首页
剑指 Offer 14- I 剪绳子

剑指 Offer 14- I 剪绳子

作者: itbird01 | 来源:发表于2021-12-28 07:18 被阅读0次
    题目.png

    题意:给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]k[1]...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。

    解题思路

    解法1:
    1.数论:任何大于1的数都可由2和3相加组成(根据奇偶证明),因为22=14,23>15, 所以将数字拆成2和3,能得到的积最大
    2.先将n分成足够多的3,剩余1个数字,乘上就可以了

    解题遇到的问题

    后续需要总结学习的知识点

    ##解法1
    class Solution {
        public int cuttingRope(int n) {
             if (n==1 || n==2)
                return 1;
            if (n==3)
                return 2;
            int sum=1;
            while (n>4){
                sum*=3;
                n-=3;
            }
    
            return sum*n;
        }
    }
    

    相关文章

      网友评论

          本文标题:剑指 Offer 14- I 剪绳子

          本文链接:https://www.haomeiwen.com/subject/iuvyqrtx.html