zoukankan      html  css  js  c++  java
  • 1354. 多次求和构造目标数组

    倒推

    每次选最大的,然后减去剩余的所有值的和,即为按题意的操作,该位置上次的值

    但倒退的话不用在意值的顺序,所以每次排一下序,选最大的即可

    显然[1,1,1000000000] 类似于这样的可能超时,所以不用减,用%

    当然如果只有两个值,且其中一个为1,因为任何数%1都为0,所以直接返回true就行

    也要注意如果剩余值的和大于等于 当前最大值,则返回false

    class Solution {
    public:
    
        bool isPossible(vector<int>& target) {
            long long sum = 0;
            int len = target.size();
            if(len == 1)
                if(target[0] == 1) return true;
                else return false;
            if(len )
            for(int i = 0; i < len; i++)
                sum += target[i];
            sort(target.begin(), target.end());
            while(target[len - 1] > 1)
            {
                
                if(target[len - 1] == target[len - 2]) return false;
                if(len == 2 && target[len - 2] == 1) return true;
                sum -= target[len - 1];
                if(sum >= target[len - 1]) return false;
                target[len - 1] %= sum;
                if(target[len - 1] == 0) return false;
                sum += target[len - 1];
                sort(target.begin(), target.end());
            }
            int cnt = 0;
            for(int i = 0; i < len; i++)
                if(target[i] != 1) return false;
            return true;
    
    
    
        }
    };
  • 相关阅读:
    Java Number类
    Java StringBuffer和StringBuilder类
    Java String类
    Java 日期时间
    Java 数组
    Java 方法
    Java正则表达式
    一步步学习SPD2010--第五章节--处理数据视图(6)--使用XSLT
    一步步学习SPD2010--第五章节--处理数据视图(5)--显示和隐藏内容
    一步步学习SPD2010--第五章节--处理数据视图(4)--应用条件格式
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/15530989.html
Copyright © 2011-2022 走看看