leetcode.1354. 多次求和构造目标数组

1354. 多次求和构造目标数组



图片说明



堆,数学。

inline int gcd(int a,int b){
    return b?gcd(b,a%b):a;
}
class Solution {
public:
typedef long long ll;
    bool isPossible(vector<int>& a) {
        int n=a.size();
        priority_queue<int>q;
        ll sum=0;
        int g=0;
        for(int i=0;i<n;i++){
            q.push(a[i]),sum+=a[i];
            g=gcd(g,a[i]);
        }
        if(sum==n)return 1;
        if(g!=1)return 0;
        while(true){
            int tp=q.top();
            q.pop();
            if(tp==1&&sum==n)return 1;
            sum-=tp;
            if(tp<sum)return 0;
            int x=tp%sum;
            if(sum==1)x=1;
            if(x==0&&sum!=1)return 0;
            q.push(x);
            sum+=x;
        }
        return 1;
    }
};
全部评论

相关推荐

最近拿到了正浩的提前批offer感觉自己的实力得到了肯定,也给了我更多底气
搞机墨镜猫:正浩提前批官网好像就只有电力电子软硬件,哥们投的是这两个岗位吗
26届校招投递进展
点赞 评论 收藏
分享
认真搞学习:这么良心的老板真少见
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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