题解 | 最长无重复子数组

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param arr int整型一维数组 the array
 * @param arrLen int arr数组长度
 * @return int整型
 */
int maxLength(int* arr, int arrLen ) {
    // write code here
    int  maxLength = 0;
    int right = 0;
    int left = 0;
    int hash[1000001] = { 0 };

    while(right < arrLen)
    {
        if(hash[arr[right]] == 0)
        {
            hash[arr[right]] = 1;
            maxLength = ( (right - left + 1) > maxLength ) ? (right - left + 1) : maxLength;
            right++;
        }
        else 
        {
            hash[arr[left]] = 0;
            left++;
        }
    }
    return maxLength;
}

思路:利用哈希表和滑动窗口解决。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务