ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

连续子数组的最大和(华为常考变体)

连续子数组的最大和(华为常考变体) 题目描述给定一个整数数组nums请找出一个具有最大和的连续子数组子数组最少包含一个元素返回其最大和。输入描述第一行输入一个整数n表示数组长度1 n 100000。第二行输入n个整数表示数组nums每个数的范围是-10000到10000。输出描述输出一个整数表示最大连续子数组和。示例 1输入text9 -2 1 -3 4 -1 2 1 -5 4输出text6解释连续子数组[4, -1, 2, 1]的和最大为6。示例 2输入text1 -1输出text-1解题思路这是经典的 Kadane 算法。设dp[i]表示以nums[i]结尾的最大连续子数组和textdp[i] max(nums[i], dp[i-1] nums[i])答案为所有dp[i]中的最大值。由于状态只依赖前一个状态可以用一个变量滚动更新。参考代码def solve(): n int(input().strip()) nums list(map(int, input().split())) cur nums[0] ans nums[0] for i in range(1, n): cur max(nums[i], cur nums[i]) ans max(ans, cur) print(ans) if __name__ __main__: solve()
返回列表