程序以查找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

回到顶部