Find the contiguous subarray within an array (containing at least one number) which has the largest product.
For example, given the array [2,3,-2,4]
,
the contiguous subarray [2,3]
has the largest product = 6
.
public int maxPathSum(TreeNode root) {
int[] res = new int[1];
res[0] = Integer.MIN_VALUE;
return maxPath(root, res);
}
private int maxPath(TreeNode root, int[] res) {
if (root == null)
return;
int left = maxPath(root.left, res);//左边一支儿(不算自己)
int right = maxPath(root.right, res);
int arch = left + right + root.val; //穿过自己
int single = Math.max(root.val, Math.max(left, right) + root.val);
//(算上自己)
res[0] = Math.max(res[0], Math.max(arch, single));//update结果
return res[0];
}