leetcode891子序列宽度之和
原题链接:
https://leetcode.cn/problems/sum-of-subsequence-widths/
贡献值法
- 子序列为去掉某个数后的序列 即不要求连续
- 只关注最大最小值 则与序列顺序无关
由 1 2 分析可得我们可以对子序列排序后进行求解
以排序后结果为 1 2 3 4 5 6 的序列为例
对于4来说
1 - 4 构成的序列均可选4 作为最大值
4 - 6 构成的序列均可选4 作为最小值
宽度值的定义为 最大值 - 最小值
因此4 对于宽度值的贡献为
[1 - 4]所构成序列中的所有最大值 - [4 -6]所构成序列中所有最小值
根据乘法原理其贡献值为: 2 ^ (4) - 2 ^ (6 - 4) = 8
将其进行推广则对排序后每个数x的贡献值为:
x * 2^(i) - 2^(n - 1 - i) (其中i为x在排序后序列中的位置 n序列总长)
1 | package main |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 niiish32x 's blog!