多语言展示
当前在线:575今日阅读:86今日分享:14

详解如何通过动态规划获取一个数组的最大子序和

题目:给定一个整数数组,实现一个算法,找到其中具有最大和的连续子数组,返回这个和值。本篇经验将分享如何通过动态规划的算法思想实现该算法。
工具/原料
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)

推荐信息