题解 | C++版本#最长无重复子数组#
最长无重复子数组
http://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4
动态规划。从左到右遍历整个数组 arr,计算以每个元素为右端的最长子数组存入 dp,其中最大的即为解。
int maxLength(vector<int>& arr) {
// write code here
if(arr.size() == 0) return 0;
vector<int> dp(arr.size(), 0);
int max = 1;
for(int i=1; i<dp.size(); ++i){
int j = i-1;
while (j >= dp[i-1]){
if(arr[j] == arr[i])
break;
--j;
}
dp[i] = j+1;
int len = i - dp[i] + 1;
if(len > max) max = len;
}
return max;
}