classSolution:defsumSubseqWidths(self, nums: List[int])->int:# 排序 + 贡献
MOD =10**9+7
n =len(nums)# max_sum
max_sum =0
nums.sort()for i, v inenumerate(nums):
max_sum += v *pow(2, i, MOD)
max_sum %= MOD
# min_sum
min_sum =0for i, v inenumerate(nums[::-1]):
min_sum += v *pow(2, i, MOD)
min_sum %= MOD
# ans# print(max_sum, min_sum)return(max_sum - min_sum)% MOD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
java
classSolution{privatestaticintMOD=(int)1e9+7;publicintsumSubseqWidths(int[] nums){Arrays.sort(nums);int n = nums.length;// 预处理幂int[] pow =newint[n];
pow[0]=1;for(int i =1; i < n; i++){
pow[i]= pow[i -1]*2%MOD;}// max_sumlong max_sum =0L;for(int i =0; i < n; i++){
max_sum +=(long)nums[i]* pow[i]%MOD;}// min_sumlong min_sum =0L;for(int i =0; i< n; i++){
min_sum +=(long)nums[n -1- i]* pow[i]%MOD;}// ansreturn(int)((max_sum - min_sum)%MOD+MOD)%MOD;}}