aboutsummaryrefslogtreecommitdiff
path: root/max_erasure_value.cpp
blob: dd72746625436cc06f1ab9bdffa93aceaff2fee0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "leetcode.h"

class Solution {
public:
  int maximumUniqueSubarray(vector<int> &nums) {
    int ans = 0;
    unordered_set<int> us;
    for (int i = 0, j = 0, win = 0; j < nums.size(); j++) {
      while (us.find(nums[j]) != us.end()) {
        us.erase(nums[i]);
        win -= nums[i];
        i++;
      }
      us.insert(nums[j]);
      win += nums[j];
      ans = max(ans, win);
    }
    return ans;
  }
};

int main() {
  Solution obj;
  vector<int> nums = {5, 2, 1, 2, 5, 2, 1, 2, 5};
  cout << obj.maximumUniqueSubarray(nums);
}