程序以查找Python中数字列表的所有子序列的宽度之和
假设我们有一个称为nums的数字列表,数字序列的宽度是该序列中最大和最小数字之间的差。我们必须找到所有num子序列的宽度之和。如果答案很大,则将结果修改10 ^ 9 + 7。
因此,如果输入像nums = [7,4,9],那么输出将是15,因为我们有以下子序列:[7],[4],[9],[7、4],[ 7,9],[4、9],[7、4、9],因此宽度为0、0、0、3、2、5、5,因此得到15。
在线示例
让我们看下面的实现以更好地理解-
class Solution:def solve(self, nums):
m = 10**9 + 7
nums.sort()
ans = 0
power = [1] * (len(nums) + 1)
for i in range(1, len(nums) + 1):
power[i] = power[i - 1] * 2 % m
for i in range(0, len(nums)):
positive = (power[i] - 1) * nums[i]
negative = (power[len(nums) - i - 1] - 1) * nums[i]
ans = (ans + positive - negative) % m
return ans
ob = Solution()
nums = [7, 4, 9]
print(ob.solve(nums))
输入值
[7, 4, 9]输出结果
15
以上是 程序以查找Python中数字列表的所有子序列的宽度之和 的全部内容, 来源链接: utcz.com/z/337968.html