题解 | #最长无重复子数组#
最长无重复子数组
https://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4
/**
*
* @param arr int整型一维数组 the array
* @param arrLen int arr数组长度
* @return int整型
*/
//
// int maxLength(int* arr, int arrLen ) {
// int i = 0, j = 0, max = 0, k, temp = 0;
// while (i < arrLen) {
// i++;
// temp = i - j;
// if (temp > max)max = temp;
// for (k = j; k < i; k++) {
// if (arr[i] == arr[k])j = k + 1;
// }
// }
// return max;
// }
//正经方法
int maxLength(int* arr, int arrLen ) {
if (arrLen == 0 || arrLen == 1)
return arrLen;
//创建哈希表ret
int ret[100000] = {0};
int retLen = 0;
for (int i = 0, j = 0; j < arrLen; j++) {
ret[arr[j]]++;
while (ret[arr[j]] > 1) { //重复字符,将窗口移动到重复字符右侧
ret[arr[i]]--;
i++;
}
if (j - i + 1 > retLen)
retLen = j - i + 1;
}
return retLen;
}
