Easy
You are given an integer array nums.
You are allowed to delete any number of elements from nums without making it empty. After performing the deletions, select a non-empty subarrays of nums such that:
Return the maximum sum of such a subarray.
Example 1:
Input: nums = [1,2,3,4,5]
Output: 15
Explanation:
Select the entire array without deleting any element to obtain the maximum sum.
Example 2:
Input: nums = [1,1,0,1,1]
Output: 1
Explanation:
Delete the element nums[0] == 1, nums[1] == 1, nums[2] == 0, and nums[3] == 1. Select the entire array [1] to obtain the maximum sum.
Example 3:
Input: nums = [1,2,-1,-2,1,0,-1]
Output: 3
Explanation:
Delete the elements nums[2] == -1 and nums[3] == -2, and select the subarray [2, 1] from [1, 2, 1, 0, -1] to obtain the maximum sum.
Constraints:
1 <= nums.length <= 100-100 <= nums[i] <= 100import java.util.HashSet;
import java.util.Set;
public class Solution {
public int maxSum(int[] nums) {
int sum = 0;
Set<Integer> st = new HashSet<>();
int mxNeg = Integer.MIN_VALUE;
for (int num : nums) {
if (num > 0) {
st.add(num);
} else {
mxNeg = Math.max(mxNeg, num);
}
}
for (int val : st) {
sum += val;
}
if (!st.isEmpty()) {
return sum;
} else {
return mxNeg;
}
}
}