题解 | #最长无重复子数组#滑动窗口思路

最长无重复子数组

http://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4



public class Solution {
    /**
     * 
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxLength (int[] arr) {
        // write code here
        int i = 0;
        int j = 0;
        int maxlen = 0;
        int[] map = new int[100000];
        Arrays.fill(map,-1);
        while(j<arr.length){
            if(map[arr[j]]==-1){
                map[arr[j]] = j;
                maxlen=Math.max(maxlen,j-i+1);
            }else{
                if(map[arr[j]]>=i){
                    i = map[arr[j]]+1;//窗口左边收缩
                }
                map[arr[j]] = j;
                maxlen=Math.max(maxlen,j-i+1);
            }
            j++;//窗口右边拓展
        }
        //System.out.println(map[3]);
        return maxlen;
    }
}
全部评论

相关推荐

认真搞学习:这个真喷不了,你是我见过最美的牛客女孩
点赞 评论 收藏
分享
03-24 21:23
已编辑
郑州大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务