53. 最大子序和(剑指 Offer 42) (2)

当然上述程序可以优化,因为我们的dp[i]其实只和前一状态i-1有关,所以可以采用一个滚动变量来记录,而不用整个数组。

class Solution { public int maxSubArray(int[] nums) { int pre = 0; //记录前一状态; int res = nums[0]; //记录最后结果的最大值; for (int num : nums) { pre = Math.max(pre + num, num); res = Math.max(res, pre); } return res; } } 体会

这道题目是一道很典型的题目,用到了各种方法和思想。要常看常做,分治是其中比较困难的,但是要会这种思想。这道题目最好的方法还是哨兵和动态规划, 其实贪心就是从动态规划的一个特殊情况过去的,体会两者的关系;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgzyws.html