程序来在Python中查找任何子数组的最大绝对和

程序来在Python中查找任何子数组的最大绝对和

假设我们有一个名为nums的数组。我们必须查找子数组[ nums_l,nums_l +1,…,nums_r-1,nums_r]的绝对和为|nums_l + nums_l +1 + … + nums_r-1 + nums_r|。我们必须查找nums的任何子数组的最大绝对和(该子数组可能为空)。

因此,如果输入为nums = [2,-4,-3,2,-6],则输出将为11,因为子数组[2,-4,-3,2]具有最大的绝对子数组和|2 + (-4)+(-3)+ 2 | = 11。

为了解决这个问题,我们将按照以下步骤进行 –

  • n:= nums的大小

  • ans:= 0,temp:= 0

  • 对于 i 在范围0到n-1之间,执行以下操作

    • 如果temp < 0,则
      • temp:= 0
    • temp:= temp + nums [i]

    • ans:= ans和| temp |的最大值

  • temp:= 0

  • 对于 i 在范围0到n-1之间,执行以下操作

    • 如果temp> 0,则
      • temp:= 0
    • temp:= temp + nums [i]

    • ans:= ans和| temp |的最大值

  • 返回ans

示例

让我们看一下以下实现以获得更好的理解-

def solve(nums):
  n = len(nums)
  ans = 0
  temp = 0

  for i in range(n):
     if (temp < 0):
        temp = 0
     temp = temp + nums[i]
     ans = max(ans, abs(temp))

  temp = 0
  for i in range(n):
     if (temp > 0):
        temp = 0
     temp = temp + nums[i]
     ans = max(ans, abs(temp))

  return ans

nums = [2,-4,-3,2,-6]
print(solve(nums))

输入

[2,-4,-3,2,-6] 

输出

11 

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程