目录
- 题目
- 思路
- 双指针+哈希
- 代码
题目 题目链接
给定一个长度为n的数组arr , 求arr的最长无重复元素子数组的长度
子数组是连续的 , 如[1,3,5]是[1,3,5,7,9]的一个子数组 , 无重复指的是子数组中所有数字都不相同
思路 双指针+哈希 设置
i , j两个指针 , 初始值均为0 , arr[i:j+1]为当前正在处理的子串用字典设置一个
哈希表 , 保存arr[i:j+1]中所有出现过的字符设置一个变量
maxLen在遍历过程中保存最长子串长度j从1出发 , 遍历整个数组:arr[j]不在哈希表中 , 则加入哈希表 , 并更新maxLenarr[j]已在哈希表中 , 则让i不断右移 , 每移动一次弹出哈希表中的arr[i], 直到弹出了哈希表中上一个与arr[j]相等的字符 , 把本次的arr[j]加入哈希表
class Solution:def maxLength(self, arr):if not arr:return 0if len(arr) == 1:return 1i = 0hashDict = {arr[0]: 1}maxLen = 1for j in range(1, len(arr)):if arr[j] not in hashDict:hashDict.update({arr[j]: 1})maxLen = max(maxLen, len(hashDict))else:while arr[j] in hashDict and i < j:hashDict.pop(arr[i])i += 1hashDict.update({arr[j]: 1})return maxLen
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
