Welcome to Subscribe On Youtube

Formatted question description: https://leetcode.ca/all/1749.html

1749. Maximum Absolute Sum of Any Subarray

Level

Medium

Description

You are given an integer array nums. The absolute sum of a subarray [nums_l, nums_{l+1}, ..., nums_{r-1}, nums_r] is abs(nums_l + nums_{l+1} + ... + nums_{r-1} + nums_r).

Return the maximum absolute sum of any (possibly empty) subarray of nums.

Note that abs(x) is defined as follows:

  • If x is a negative integer, then abs(x) = -x.
  • If x is a non-negative integer, then abs(x) = x.

Example 1:

Input: nums = [1,-3,2,3,-4]

Output: 5

Explanation: The subarray [2,3] has absolute sum = abs(2+3) = abs(5) = 5.

Example 2:

Input: nums = [2,-5,1,-4,3,-2]

Output: 8

Explanation: The subarray [-5,1,-4] has absolute sum = abs(-5+1-4) = abs(-8) = 8.

Constraints:

  • 1 <= nums.length <= 10^5
  • -10^4 <= nums[i] <= 10^4

Solution

Calculate the maximum subarray sum and the minimum subarray sum of nums. Then calculate the absolute values of the two sums, and return the maximum value.

  • class Solution {
        public int maxAbsoluteSum(int[] nums) {
            int sumMax = nums[0], sumMin = nums[0];
            int max = Math.max(sumMax, 0), min = Math.min(sumMin, 0);
            int length = nums.length;
            for (int i = 1; i < length; i++) {
                int num = nums[i];
                sumMax = Math.max(sumMax + num, num);
                sumMin = Math.min(sumMin + num, num);
                max = Math.max(max, sumMax);
                min = Math.min(min, sumMin);
            }
            return Math.max(Math.abs(max), Math.abs(min));
        }
    }
    
    ############
    
    class Solution {
        public int maxAbsoluteSum(int[] nums) {
            int f = 0, g = 0;
            int ans = 0;
            for (int x : nums) {
                f = Math.max(f, 0) + x;
                g = Math.min(g, 0) + x;
                ans = Math.max(ans, Math.max(f, Math.abs(g)));
            }
            return ans;
        }
    }
    
  • // OJ: https://leetcode.com/problems/maximum-absolute-sum-of-any-subarray/
    // Time: O(N)
    // Space: O(1)
    class Solution {
    public:
        int maxAbsoluteSum(vector<int>& A) {
            int ans = 0, mn = 0, mx = 0, sum = 0;
            for (int n : A) {
                sum += n;
                ans = max({ ans, mx - sum, sum - mn });
                mx = max(mx, sum);
                mn = min(mn, sum);
            }
            return ans;
        }
    };
    
  • # 1749. Maximum Absolute Sum of Any Subarray
    # https://leetcode.com/problems/maximum-absolute-sum-of-any-subarray
    
    class Solution:
        def maxAbsoluteSum(self, nums: List[int]) -> int:
            mmax = mmin = s = 0
            
            for num in nums:
                s += num
                mmax = max(mmax, s)
                mmin = min(mmin, s)
    
            return mmax - mmin
    
    
  • func maxAbsoluteSum(nums []int) (ans int) {
    	var f, g int
    	for _, x := range nums {
    		f = max(f, 0) + x
    		g = min(g, 0) + x
    		ans = max(ans, max(f, abs(g)))
    	}
    	return
    }
    
    func abs(x int) int {
    	if x < 0 {
    		return -x
    	}
    	return x
    }
    
    func max(a, b int) int {
    	if a > b {
    		return a
    	}
    	return b
    }
    
    func min(a, b int) int {
    	if a < b {
    		return a
    	}
    	return b
    }
    
  • function maxAbsoluteSum(nums: number[]): number {
        let f = 0;
        let g = 0;
        let ans = 0;
        for (const x of nums) {
            f = Math.max(f, 0) + x;
            g = Math.min(g, 0) + x;
            ans = Math.max(ans, f, -g);
        }
        return ans;
    }
    
    
  • impl Solution {
        pub fn max_absolute_sum(nums: Vec<i32>) -> i32 {
            let mut f = 0;
            let mut g = 0;
            let mut ans = 0;
            for x in nums {
                f = i32::max(f, 0) + x;
                g = i32::min(g, 0) + x;
                ans = i32::max(ans, f.max(-g));
            }
            ans
        }
    }
    

All Problems

All Solutions