700420. Max sum subarray by removing at most one element

Medium

Max sum subarray by removing at most one element

Summary

The problem is to find the maximum sum of a subarray that can be obtained by removing at most one element from the original array. This problem involves arrays, dynamic programming, and optimization techniques.

Detailed Explanation

The approach to solve this problem is to use dynamic programming. We will create a 2D DP table where dp[i][j] represents the maximum sum of subarray ending at index i with the element at index j removed (or not removed).

Here's the step-by-step breakdown:

  1. Initialize the DP table: dp[0][0] = arr[0], and dp[i][j] = 0 for all other indices.
  2. Fill the DP table:
    • For each element arr[i] in the array, calculate the maximum sum of subarray ending at this index by considering two cases: removing or not removing the current element.
    • If we remove the current element, the maximum sum will be the same as the maximum sum of subarray ending at the previous index. Update dp[i][1] = dp[i-1][0].
    • If we don't remove the current element, the maximum sum will be the current element plus the maximum sum of subarray ending at the previous index minus the current element. Update dp[i][0] = arr[i] + max(dp[i-1][0], dp[i-1][1]).
  3. Find the maximum sum of subarray: The maximum sum of subarray is the maximum value in the last row of the DP table (max(dp[n-1][0], dp[n-1][1])), where n is the length of the array.

Time complexity: O(n), where n is the length of the array. Space complexity: O(n), as we need to store the DP table.

Optimized Solutions

Java

View on GeeksforGeeks
public int maxSumSubarray(int[] arr) {
    int n = arr.length;
    int[][] dp = new int[n][2];
    
    dp[0][0] = arr[0];
    for (int i = 1; i < n; i++) {
        dp[i][0] = Math.max(arr[i], dp[i-1][0] + arr[i]);
        dp[i][1] = Math.max(dp[i-1][0], dp[i-1][1]);
    }
    
    return Math.max(dp[n-1][0], dp[n-1][1]);
}

DevExCode

Master coding interviews with Leetcode, system design, TechBit, QuickLearn, DevTips, Tech Battles, and career services.

© 2026 DevExCode. All rights reserved.