891. Sum of Subsequence Widths

2018-10-13  本文已影响35人  想学会飞行的阿番

思路:
注意,这题907题目不一样,这个是可以打乱的组合,那个是必须连续
把题目拆开来看,可以看出,想当与把每个子序列的最大值加起来,把最小值减掉
而第i大的数字作为最大值的组合有2^i种。
第i大的数字作为最小值的组合有2^(n-i)种

class Solution {
public:
        sort(A.begin(),A.end());
        int n = A.size();
        long long c = 1,result = 0;
        long long m = 1e9+7;
        for(int i=0;i<n;i++,c = (c<<1)%(m))
        {
            result =(result + A[i] * c - A[n-1-i] *c)%m;
        }
        return result;
    }
};

上一篇 下一篇

猜你喜欢

热点阅读