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