最长无重复子数组_牛客题霸_牛客网

63 阅读1分钟

最长无重复子数组_牛客题霸_牛客网

刚开始想着就去去重,然后求一下去重之后的元素个数:

class Solution {
public:
    int maxLength(vector<int>& arr) {
        // write code here

        set<int>s;
        for(int i=0;i<arr.size();i++)
        {
            s.insert(arr[i]);
        }
   return s.size();
    }
};

image.png

仔细看了看题目,要求求的是最大连续不重复子串的长度,要求连续。

因此就不能上面那种求法了。

这里的求法是滑动窗口+哈希 最长无重复子数组_牛客题霸_牛客网

class Solution {
public:
    int maxLength(vector<int>& arr) {
    int res=0;
        unordered_map<int,int>mp;
        for(int left=0,right=0;right<arr.size();right++)
        {
            mp[arr[right]]++;

            while(mp[arr[right]]>1)
            {
               
                mp[arr[left]]--;
                 left++;
            }
            res=max(res,right-left+1);
        }
        return res;
    }
};

image.png