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

最小的K个数

http://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf

import java.util.*;


public class Solution {
    /**
     * 
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxLength(int[] arr) {
        if (arr.length == 0)
            return 0;
        //存的是数字  数字最后一次出现的位置
        HashMap<Integer, Integer> map = new HashMap<>();
        int max = 0;
        for (int i = 0, j = 0; i < arr.length; ++i) {
            //如果当前位置在map里面  
            if (map.containsKey(arr[i])) {
                //j代表的就是左边的界限  
                j = Math.max(j, map.get(arr[i]) + 1);
            }
            //如果不存在添加   如果存在 存的就是数字最后的下标位置了
            map.put(arr[i], i);
            //更新最长无重复子数组
            max = Math.max(max, i - j + 1);
        }
        return max;
    }
}
全部评论

相关推荐

09-27 00:29
东北大学 Java
伟大的麻辣烫:查看图片
阿里巴巴稳定性 75人发布 投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
已老实求offer😫:有点像徐坤(没有冒犯的意思哈)
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务