
思路:滑动窗口 + 哈希表
- 此题等于在问:不重复子数组的最大和是多少
 - 哈希表不一定快,自己可以写一个record数组
 - 两个指针,同时从0出发,如果发现右边指针指向的数字已经在rec中了,那么就不断移动左边的指针,直到右边的数字不在rec中。然后,插入右边的数字,不断更新,得到需要的数值。
 
class Solution {public:    int maximumUniqueSubarray(vector<int>& nums) {        int max_val = 0, cur_val = 0;        int len_nums = nums.size();        unordered_set<int> rec_nums;        for (int left = 0, right = 0; right < len_nums; ) {            while(rec_nums.count(nums[right])) {                cur_val -= nums[left];                rec_nums.erase(nums[left++]);            }            rec_nums.insert(nums[right]);            cur_val += nums[right];            max_val = max(max_val, cur_val);            ++right;        }        return max_val;    }};