题解 | 最长无重复子数组
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @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;
}
思路:利用哈希表和滑动窗口解决。