最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
示例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
示例 2:
输入:nums = [1]
输出:1
示例 3:
输入:nums = [5,4,-1,7,8]
输出:23
提示:
1 <= nums.length <= 105
-104 <= nums[i] <= 104
答案:
func maxSubArray(nums []int) int { len_nums := len(nums) max_nums := nums[0] if len_nums == 1 { return max_nums } dict_nums := map[int]int{ 0: max_nums, } for i := 1; i <= len_nums - 1; i++{ var i_max_nums int if dict_nums[i-1] >= 0 { i_max_nums = dict_nums[i-1] + nums[i] } else { i_max_nums = nums[i] } dict_nums[i] = i_max_nums if i_max_nums > max_nums { max_nums = i_max_nums } } return max_nums }
class Solution: def maxSubArray(self, nums: [int]) -> int: len_cd = len(nums) max_sum = nums[0] if len_cd == 1: return max_sum else: sum_dict = {0: max_sum} i = 1 while i <= len_cd - 1: if sum_dict[i - 1] > 0: i_max_sum = nums[i] + sum_dict[i - 1] else: i_max_sum = nums[i] sum_dict[i] = i_max_sum if i_max_sum > max_sum: max_sum = i_max_sum i += 1 return max_sum
结束