leetcode 891. 子序列宽度之和
程序员文章站
2022-06-29 18:35:01
...
1. 题目
给定一个整数数组 A ,考虑 A 的所有非空子序列。
对于任意序列 S ,设 S 的宽度是 S 的最大元素和最小元素的差。
返回 A 的所有子序列的宽度之和。
由于答案可能非常大,请返回答案模 10^9+7。
2.解法
java:
class Solution {
public int sumSubseqWidths(int[] A) {
int MOD = 1_000_000_007;
int N = A.length;
Arrays.sort(A);
long[] pow2 = new long[N];
pow2[0] = 1;
for (int i = 1; i < N; ++i)
pow2[i] = pow2[i-1] * 2 % MOD;
long ans = 0;
for (int i = 0; i < N; ++i)
ans = (ans + (pow2[i] - pow2[N-1-i]) * A[i]) % MOD;
return (int) ans;
}
}
参考:
上一篇: 发送和接收信息
下一篇: OSS云文件列举分页功能的解决方法