题解 | #最长无重复子数组#
最长无重复子数组
http://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4
public class Solution {
/**
*
* @param arr int整型一维数组 the array
* @return int整型
*/
public int maxLength (int[] arr) {
// write code here
if(arr.length==0)
{
return 0;
}
HashMap<Integer,Integer> map=new HashMap<>();
int left=0;
int max=0;
for(int i=0;i<arr.length;i++)
{
if(map.containsKey(arr[i]))
{
left=Math.max(left,map.get(arr[i])+1);
}
map.put(arr[i],i);
if(max<(i-left+1))
{
max=(i-left+1);
}
map.put(arr[i],i);
}
return max;
}
}
left=Math.max(left,map.get(arr[i])+1); 这里一定要记得max,像abba这种情况,当我们录入第二个b的时候 left就会等于 1+1 ==2,但是后面又出现了一个a,这个时候如果是这种形式的话,left就会变成0+1 == 1也就相当于left左移了,这个时候的字串就变成了bba了