程序来在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,则
-
temp:= 0
-
对于 i 在范围0到n-1之间,执行以下操作
- 如果temp> 0,则
- temp:= 0
- temp:= temp + nums [i]
-
ans:= ans和| temp |的最大值
- 如果temp> 0,则
-
返回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