题目:给定一个整数数组,实现一个算法,找到其中具有最大和的连续子数组,返回这个和值。本篇经验将分享如何通过动态规划的算法思想实现该算法。
工具/原料
1
Eclipse
2
JDK1.8
方法/步骤
1
利用动态规划思想,实现算法,步骤如下:1. 创建一个整型数组 results,其第 i 个元素代表参数数组 nums 中第 i 个元素作为最后一个元素的所有子数组的最大和值;2. 对于参数数组 nums 的第 i+1 个元素,包含该元素的子数组的最大和值计算方法为:如果 results[i] > 0, 则 results[i+1] = results[i] + nums[i+1],否则 results[i+1] = nums[i+1]。
2
编写本地测试主方法。
3
运行本地测试主方法,观察控制台输出,符合预期,本地测试通过。
4
平台提交算法,测试通过。
5
算法复杂度分析:算法需遍历一遍数组,因此时间复杂度为 O(n) ,n即数组的长度;因为要创建一个长度为 n 的数组存储中间结果,因此其空间复杂度也是 O(n)。
注意事项
可以通过直接修改原始数组而将算法的空间复杂度降低为常量,即 O(1)
上一篇:电子式血压计