子数组的最大累加和
子数组的最大累加和问题
http://www.nowcoder.com/questionTerminal/554aa508dd5d4fefbf0f86e5fe953abd
分治
动态规划
其实题目可以用动态规划做,很简单的动态规划题目,而且也是最优解
先看代码:
public int maxsumofSubarray (int[] arr) { int n = arr.length; if(n == 1) return arr[0]; int max = 0; for(int i = 1; i < n; i++){ arr[i] = Math.max(arr[i],arr[i]+arr[i-1]); max = Math.max(max,arr[i]); } return max; }
图解:
优化,不修改原数组的方法
public int maxSubArray(int[] nums) { int ans = nums[0],sum = Integer.MIN_VALUE; for(int num: nums){ if(sum >= 0){ sum += num; }else{ sum = num; } ans = Math.max(ans,sum); } return ans; }
CS-Review 文章被收录于专栏
本专栏记录本人维护的仓库( cs-review.cn )分类刷题解法~