Python3:变量作用域
Python 3: Variable Scoping
def max_sum_subarray(arr):
cur_max_sum = global_max_sum = arr[0]
start = end = 0
sz = len(arr)
for i in range(1, sz):
cur_max_sum = max(arr[i], cur_max_sum+arr[i])
global_max_sum = max(global_max_sum, cur_max_sum)
if cur_max_sum > global_max_sum:
global_max_sum = cur_max_sum
end = i
g = global_max_sum
for i in range(end, -1, -1):
g -= arr[i]
if not g:
start = i
break
ans = {
'global_max_sum': global_max_sum,
'start': start+1,
'end': end+1
}
return ans
此处,start
和 end
不会在 if
下的 for 循环内更新,尽管条件满足。
如果在if
中使用start
或end
,则没有问题。是否存在任何范围界定问题或其他问题?请详细解释一下。
提前致谢。
逻辑错误:
global_max_sum = max(global_max_sum, cur_max_sum)
if cur_max_sum > global_max_sum:
cur_max_sum
根本不可能大于 global_max_sum
。
def max_sum_subarray(arr):
cur_max_sum = global_max_sum = arr[0]
start = end = 0
sz = len(arr)
for i in range(1, sz):
cur_max_sum = max(arr[i], cur_max_sum+arr[i])
global_max_sum = max(global_max_sum, cur_max_sum)
if cur_max_sum > global_max_sum:
global_max_sum = cur_max_sum
end = i
g = global_max_sum
for i in range(end, -1, -1):
g -= arr[i]
if not g:
start = i
break
ans = {
'global_max_sum': global_max_sum,
'start': start+1,
'end': end+1
}
return ans
此处,start
和 end
不会在 if
下的 for 循环内更新,尽管条件满足。
如果在if
中使用start
或end
,则没有问题。是否存在任何范围界定问题或其他问题?请详细解释一下。
提前致谢。
逻辑错误:
global_max_sum = max(global_max_sum, cur_max_sum)
if cur_max_sum > global_max_sum:
cur_max_sum
根本不可能大于 global_max_sum
。