LeetCode Entry
3487. Maximum Unique Subarray Sum After Deletion
Max non-empty uniq subsequence sum
3487. Maximum Unique Subarray Sum After Deletion easy
blog post
substack
youtube

Join me on Telegram
https://t.me/leetcode_daily_unstoppable/1060
Problem TLDR
Max non-empty uniq subsequence sum #easy
Intuition
Remove all negatives, dedup all positives, then sum.
Approach
- careful with
non-empty, should take 1 negative
Complexity
-
Time complexity: \(O(n)\)
-
Space complexity: \(O(n)\)
Code
// 23ms
fun maxSum(n: IntArray) =
n.max().takeIf { it < 0 } ?:
n.filter { it > 0 }.distinct().sum()
// 12ms
fun maxSum(n: IntArray): Int {
val f = IntArray(101)
for (x in n) if (x >= 0) f[x] = x
return n.max().takeIf { it < 0 } ?: f.sum()
}
// 0ms
pub fn max_sum(mut n: Vec<i32>) -> i32 {
n.sort_unstable(); n.dedup();
if n[n.len() - 1] < 0 { n[n.len() - 1] }
else { n.retain(|&x| x > 0); n.into_iter().sum() }
}
// 1ms
int maxSum(vector<int>& n) {
int f[101]={}, m = n[0], s = 0;
for (int x: n) m = max(m, x), s -= x < 0 ? 0 : (f[x] - (f[x] = x));
return m < 0 ? m : s;
}