剪绳子

剪绳子

http://www.nowcoder.com/questionTerminal/57d85990ba5b440ab888fc72b0751bf8

public class Solution {
    /**
    * 解题思路,找出最优解的规律
    * 当target等于1,2,3的时候,结果是固定的
    * 当target大于3的时候,可以看以下数据
    * target=4, 最优解:2 2
    * target=5, 最优解:3 2
    * target=6, 最优解:3 3
    * target=7, 最优解:3 2 2
    * target=8, 最优解:3 3 2
    * target=9, 最优解:3 3 3
    * target=10,最优解:3 3 2 2
    * target=11,最优解:3 3 3 2
    * target=12,最优解:3 3 3 3
    * target=13,最优解:3 3 3 2 2
    * target=14,最优解:3 3 3 3 2
    * target=15,最优解:3 3 3 3 3
    *
    * 所以不难发现3和2的个数规律
    */
    public int cutRope(int target) {
        if(target<=1){
            return 0;
        }
        if(target==2){
            return 1;
        }
        if(target==3){
            return 2;
        }
        //数字长度
        int length=target%3==0?target/3:target/3+1;
        //数字后面2的个数
        int length2=3-target%3;
        int result=1;
        //算乘积
        for(int i=0;i<length;i++){
            result=result*(i<length-length2?3:2);
        }
        return result;
    }
}
全部评论
牛逼找规律
1 回复 分享
发布于 2020-03-22 17:06
真的秀
1 回复 分享
发布于 2020-07-05 16:51
34行处 2的计算方法应该是: //计算2的个数 int length2 = target%3==0?0:3-target%3;
点赞 回复 分享
发布于 2020-07-06 14:06
34行int length2=3-target%3;//整除3时,会少乘一次3
点赞 回复 分享
发布于 2020-08-11 22:21
思路懂了, 但是后面求2的个数那一行不对
点赞 回复 分享
发布于 2021-05-08 21:40

相关推荐

10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
评论
28
2
分享
牛客网
牛客企业服务