魔法货车题解

想法应该很容易想到,挑选最大的然后让它一直翻倍直到满足条件就可以了。这样做会超时么?可能很多人会有这样的疑惑而不敢写,但是我可以明确的告诉你,不会!原因是这是指数级增长的,,这意味着如果我们最大的是1也只需要操作30次即可。复杂度很小

class Solution {
public:
    int Holy(int n, int m, vector<int>& x) {
        // write code here
        long long sum=0,mx=0;
        for(int i=0;i<m;i++) {
            mx=max(mx,x[i]+0ll);
            sum+=x[i];
        }
        if(sum>=n) {
            return 0;
        }
        long long lef=n-sum,tot=0;
        while(lef>0) {
            lef-=mx;
            mx*=2;
            tot++;
        }
        return tot;
    }
};
全部评论

相关推荐

10-17 10:05
已编辑
北华大学 全栈开发
牛客872465272号:掉头发了哥
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务