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

最长无重复子数组

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

双指针+模拟

思路:开一个数组,记录每个值出现的次数,然后进行双指针,当下标i++的时候,只有st[arr[i]]的个数会发生改变,所以用另一个下标j进行去除即可。

alt

import java.util.*;


public class Solution {
    int st[] = new int[100010];
    public int maxLength (int[] arr) {
        int res = 0;
        int n = arr.length;
        for(int i = 0,j = 0;i < n;i++){
            st[arr[i]]++;
            while(j <= i && st[arr[i]] > 1){
                st[arr[j++]]--;
            }
            res = Math.max(res,i - j + 1);
        }
        return res;
    }
}
全部评论

相关推荐

11-04 10:30
已编辑
门头沟学院 研发工程师
开心小狗🐶:“直接说答案”
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 11:29
已编辑
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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