整站seoseo优化,做推广最好的网站是哪个,wordpress接入翼支付宝,刀客源码网题目
给你一个整数数组 nums 。一个子数组 [numsl, numsl1, ..., numsr-1, numsr] 的 和的绝对值 为 abs(numsl numsl1 ... numsr-1 numsr) 。
请你找出 nums 中 和的绝对值 最大的任意子数组#xff08;可能为空#xff09;#xff0c;并返回该 最大值 。
abs(x) 定…题目
给你一个整数数组 nums 。一个子数组 [numsl, numsl1, ..., numsr-1, numsr] 的 和的绝对值 为 abs(numsl numsl1 ... numsr-1 numsr) 。
请你找出 nums 中 和的绝对值 最大的任意子数组可能为空并返回该 最大值 。
abs(x) 定义如下
如果 x 是负整数那么 abs(x) -x 。如果 x 是非负整数那么 abs(x) x 。
示例 1
输入nums [1,-3,2,3,-4]
输出5
解释子数组 [2,3] 和的绝对值最大为 abs(23) abs(5) 5 。示例 2
输入nums [2,-5,1,-4,3,-2]
输出8
解释子数组 [-5,1,-4] 和的绝对值最大为 abs(-51-4) abs(-8) 8 。提示
1 nums.length 10^5-10^4 nums[i] 10^4 解答
源代码
class Solution {public int maxAbsoluteSum(int[] nums) {int positiveSum 0, negativeSum 0;int positiveMax 0, negativeMin 0;for (int num : nums) {positiveSum num;positiveMax Math.max(positiveMax, positiveSum);positiveSum positiveSum 0 ? 0 : positiveSum;negativeSum num;negativeMin Math.min(negativeMin, negativeSum);negativeSum negativeSum 0 ? 0 : negativeSum;}return Math.max(positiveMax, -negativeMin);}
}
总结
这道题可以参考 [53.最大子数组和] 。子数组和的绝对值包括最大值和最小值的相反数遍历时要考虑到两种情况。