题解 | #最长无重复子数组#

最长无重复子数组

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;
}

全部评论

相关推荐

点赞 评论 收藏
分享
Cherrycola01:0实习 0项目 约等于啥也没有啊 哥们儿这简历认真的吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务