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

最长无重复子数组

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

1.统计不重复的长度
2.删除上次发生重复的数字之前的数

import java.util.HashMap;
import java.util.Map;

public class Solution {
    public int maxLength(int[] arr) {
        Map<Integer, Integer> m = new HashMap<>();
        int max = 0;
        int cur = 0;
        int j = 0;
        for (int i = 0; i < arr.length; i++) {
            int index = m.getOrDefault(arr[i], -1);
            if ( index == -1) {
                cur++;
                m.put(arr[i], i);
                if (cur > max) max = cur;
            } else {
                if (cur > max) max = cur;
                m.put(arr[i], i);
                for (; j < index; j++) {
                    if (m.getOrDefault(arr[j], -1) == j) {
                        m.remove(arr[j]);
                    }
                }
                cur = i - index;
            }
        }
        return max;
    }

    public static void main(String[] args) {
        int[] arr = {2,2,3,4,3};
//        int[] arr = {2,3,4,5};
        System.out.println(new Solution().maxLength(arr));
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
07-09 20:50
门头沟学院 Java
码农索隆:1.教育背景和荣誉证书合二为一。 2.获奖项目理一遍,你做了什么,对你求职的岗位有什么帮助,没有就删掉。 3.技能特长和教育背景交换位置。 4.技能特长写的太差,上网上找简历参考。都不用问你别的,一个redis就能把你问住,写写你具体会redis哪些方面的知识。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务