题解 | #最长无重复子数组#
最长无重复子数组
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++)