题解 | #最长无重复子数组#

最长无重复子数组

https://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4

方法:哈希表

遍历数组,使用哈希表记录下数组元素出现的次数,当遇到元素次数大于1时,将数组的left右移直到元素次数不大于1。

设置一个值来维护无重复子数组的长度。

时间复杂度:o(n)

空间复杂度:o(n)

class Solution {
  public:
    int maxLength(vector<int>& arr) {
        unordered_map<int, int> map;

        int res = 0;
        for (int left = 0, right = 0; left <= right && right < arr.size(); right++) {
            map[arr[right]]++;

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

        return res;
    }
};

刷题题解(c++) 文章被收录于专栏

算法题题解(c++)

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务