《刀劍亂舞無雙》Steam版正式發售 普通版售價349元
阿新 • • 發佈:2022-05-24
""" 力扣53. 最大子陣列和 給你一個整數陣列 nums ,請你找出一個具有最大和的連續子陣列(子陣列最少包含一個元素),返回其最大和。 子陣列 是陣列中的一個連續部分。 """ def max_sub_array(nums): ''' 暴力解法 第二層在第一層的基礎上迴圈 :param nums: :return: ''' n = len(nums) result = nums[0] for i in range(n): _sum = 0 for j in range(i, n): _sum += nums[j] result = max(result, _sum) return result def max_sub_array1(nums): ''' 動態規劃 :param nums: :return: ''' n = len(nums) pre = 0 res = nums[0] for i in range(n): pre = max(nums[i], pre + nums[i]) res = max(pre, res) return res def max_sub_array2(nums): ''' 貪婪演算法,順便找出子陣列位置 :param nums: :return: ''' start = 0 end = 0 res = nums[0] pre = 0 for i, value in enumerate(nums): pre += value if pre >= res: res = pre end = i if pre < 0: pre = 0 start = i + 1 return nums[start:end + 1], sum(nums[start:end + 1])