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

最长无重复子数组

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了

全部评论

相关推荐

牛仔知道哦:你是我见过最美的牛客女孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务