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

最长无重复子数组

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

快慢指针配合HashMap去重
import java.util.*;


public class Solution {
    /**
     * 
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxLength (int[] arr) {
        // write code here
        Map<Integer,Integer>map=new HashMap<>();
        int n=arr.length;
        if(n<=1){
            return n;
        }
        int i=0;
        int j=0;
        int max=1;
        while(j<n&&i<n){
            if(!map.containsKey(arr[j])){
                map.put(arr[j],arr[j]);
                max=Math.max(max,j-i+1);
            }
            else {
                while(i<j){
                    if(arr[i]==map.get(arr[j])){
                        i++;
                        break;
                    }
                    map.remove(arr[i]);
                    i++;
                }
            }
            j++;
            
            
        }
        return max;
        
        
    }
}
全部评论

相关推荐

我是小红是我:学校换成中南
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务