MCPcopy Create free account
hub / github.com/Blankj/awesome-java-leetcode / Solution

Class Solution

src/com/blankj/easy/_0053/Solution.java:11–48  ·  view source on GitHub ↗

author: Blankj blog : http://blankj.com time : 2017/05/04 desc :

Source from the content-addressed store, hash-verified

9 * </pre>
10 */
11public class Solution {
12 // public int maxSubArray(int[] nums) {
13// int len = nums.length, dp = nums[0], max = dp;
14// for (int i = 1; i < len; ++i) {
15// dp = nums[i] + (dp > 0 ? dp : 0);
16// if (dp > max) max = dp;
17// }
18// return max;
19// }
20 public int maxSubArray(int[] nums) {
21 return helper(nums, 0, nums.length - 1);
22 }
23
24 private int helper(int[] nums, int left, int right) {
25 if (left >= right) return nums[left];
26 int mid = (left + right) >> 1;
27 int leftAns = helper(nums, left, mid);
28 int rightAns = helper(nums, mid + 1, right);
29 int leftMax = nums[mid], rightMax = nums[mid + 1];
30 int temp = 0;
31 for (int i = mid; i >= left; --i) {
32 temp += nums[i];
33 if (temp > leftMax) leftMax = temp;
34 }
35 temp = 0;
36 for (int i = mid + 1; i <= right; ++i) {
37 temp += nums[i];
38 if (temp > rightMax) rightMax = temp;
39 }
40 return Math.max(Math.max(leftAns, rightAns), leftMax + rightMax);
41 }
42
43 public static void main(String[] args) {
44 Solution solution = new Solution();
45 int[] nums0 = new int[]{-2, 1, -3, 4, -1, 2, 1, -5, 4};
46 System.out.println(solution.maxSubArray(nums0));
47 }
48}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected