【剑指offer】剪绳子(两种思路)

剪绳子

https://www.nowcoder.com/questionTerminal/57d85990ba5b440ab888fc72b0751bf8?answerType=1&f=discussion

class Solution {
public:
    int cutRope(int number) {
        if(number == 2) return 1;
        if(number == 3) return 2;
       //动态规划, O(n)
        vector<int> res = {0, 1, 2, 3};//数组这里记录的长度是不考虑继续再剪的最长长度,和前面的返回值稍有区别。
        for(int i = 4; i <= number; i++){
            int j = i / 2;
            res.push_back(res[j] * res[i - j]);
        }
        return res[number];
        /*
        找到规律发现,最大乘绩的分法一般就是一堆3和一个2或者两个2的组合
        O(logn)
        int x = number % 3;
        int y = number / 3;
        if(x == 0)
            return (long long) pow(3, y);
        else if(x == 1)
            return 2 * 2 (long long) pow(3, y - 1);
        else
            return 2 * (long long) pow(3, y);
        */
    }
};
全部评论

相关推荐

06-26 10:08
门头沟学院 C++
北京Golang实习,一个月4700,吃住都不报,公司位置在海淀。请问友友怎么看呢?如果要租房的话有什么建议吗
码农索隆:租房肯定是合租了,剩下的钱,差不多够正常吃饭了,看看能不能学到东西吧
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-04 15:20
牛客61197583...:看到室友一个个没怎么学通过关系直接入职或者接到面试,真的很难受。八股不知道背了多少遍,hot100也刷了1.5遍了,但就是没有面试的机会,唉
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务