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

最长无重复子数组

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

import java.util.*;
public class Solution {
    /**
     * 
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxLength (int[] arr) {
        if(arr == null || arr.length == 0) {
            return 0 ;
        }
        if(arr.length == 1) {
            return 1 ;
        }
        //f[i]表示 以arr[i]结尾的最长无重复连续子数组的长度
        int f[] = new int[arr.length] ;
        f[0] = 1 ;//初始化 只有一个元素的时候,必然为1
        int maxLen = -1 ;//记录最长的那一个
        for(int i = 1 ; i < f.length ; i ++) {//计算
            f[i] = 1 ;
            //遍历f[i-1],f[i-1]必然是无重复的
            // 0,1,2,3,4
            int len = 0 ;
            for(int j = i-1 ; j >= i-f[i-1] ; j--) {
                if(arr[j] != arr[i]) {
                    len ++ ;
                } else {//有一个重复的 直接break
                    break ;
                }
            }
            f[i] += len ;
            if(f[i] > maxLen) {
                maxLen = f[i] ;
            }
        }
        return maxLen ;
        
        
    }
}

一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论

相关推荐

炫哥_:哥们项目描述里面vector和mysql之类的都要写吗,直接开头技术栈巴拉巴拉就行了,完全不是技术点啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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