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

最长无重复子数组

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;
    }
}
全部评论

相关推荐

10-27 17:26
东北大学 Java
点赞 评论 收藏
分享
shtdbb_:还不错,没有让你做了笔试再挂你
点赞 评论 收藏
分享
最近和朋友聊天,她说了句让我震惊的话:"我发现我连周末点外卖都开始'最优解'了,一定要赶在高峰期前下单,不然就觉得自己亏了。"这不就是典型的"班味入侵"吗?工作思维已经渗透到生活的方方面面。
小型域名服务器:啊?我一直都这样啊?我还以为是我爱贪小便宜呢?每次去实验室都得接一杯免费的开水回去,出门都得规划一下最短路径,在宿舍就吃南边的食堂,在实验室就吃北边的食堂,快递只有顺路的时候才取。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务