给定一个数组arr,返回arr的最长无的重复子串的长度(无重复指的是所有字母都不相同)。
输入包含两行,第一行包含一个整数 n ( 1 ≤ n ≤ 1 0 5 ) n(1 \leq n \leq 10^5) n(1≤n≤105),代表数组arr的长度,第二行包含n个整数,代表数组 a r r ( 1 ≤ a r r [ i ] ≤ 1 0 6 ) arr(1 \leq arr[i] \leq 10^6) arr(1≤arr[i]≤106)。
输出一个整数,代表arr的最长无重复字符的长度。
贪心。使用一个哈希表记录每个元素最近出现的位置,假设当前遍历到 i 位置,pre 表示必须以 arr[i-1] 结尾情况下,最长无重复子串开始位置的前一位置。若 pre<hash[arr[i]] ,说明在pre后面出现过 arr[i] ,则更新 pre 为 hash[arr[i]];否则的话,pre+1 到 i 位置均是不重复的元素,直接更新最大长度即可。