Skip to content

Latest commit

 

History

History
 
 

1749. Maximum Absolute Sum of Any Subarray

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

You are given an integer array nums. The absolute sum of a subarray [numsl, numsl+1, ..., numsr-1, numsr] is abs(numsl + numsl+1 + ... + numsr-1 + numsr).

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 <= 105
  • -104 <= nums[i] <= 104

Related Topics:
Greedy

Similar Questions:

Solution 1.

// OJ: https://leetcode.com/problems/maximum-absolute-sum-of-any-subarray/
// Author: github.com/lzl124631x
// 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;
    }
};