同步操作将从 编程语言算法集/Python 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
"""The maximum subarray sum problem is the task of finding the maximum sum that can beobtained from a contiguous subarray within a given array of numbers. For example, giventhe array [-2, 1, -3, 4, -1, 2, 1, -5, 4], the contiguous subarray with the maximum sumis [4, -1, 2, 1], so the maximum subarray sum is 6.Kadane's algorithm is a simple dynamic programming algorithm that solves the maximumsubarray sum problem in O(n) time and O(1) space.Reference: https://en.wikipedia.org/wiki/Maximum_subarray_problem"""from collections.abc import Sequencedef max_subarray_sum(arr: Sequence[float], allow_empty_subarrays: bool = False) -> float:"""Solves the maximum subarray sum problem using Kadane's algorithm.:param arr: the given array of numbers:param allow_empty_subarrays: if True, then the algorithm considers empty subarrays>>> max_subarray_sum([2, 8, 9])19>>> max_subarray_sum([0, 0])0>>> max_subarray_sum([-1.0, 0.0, 1.0])1.0>>> max_subarray_sum([1, 2, 3, 4, -2])10>>> max_subarray_sum([-2, 1, -3, 4, -1, 2, 1, -5, 4])6>>> max_subarray_sum([2, 3, -9, 8, -2])8>>> max_subarray_sum([-2, -3, -1, -4, -6])-1>>> max_subarray_sum([-2, -3, -1, -4, -6], allow_empty_subarrays=True)0>>> max_subarray_sum([])0"""if not arr:return 0max_sum = 0 if allow_empty_subarrays else float("-inf")curr_sum = 0.0for num in arr:curr_sum = max(0 if allow_empty_subarrays else num, curr_sum + num)max_sum = max(max_sum, curr_sum)return max_sumif __name__ == "__main__":from doctest import testmodtestmod()nums = [-2, 1, -3, 4, -1, 2, 1, -5, 4]print(f"{max_subarray_sum(nums) = }")
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。