题解 | C++版本#最长无重复子数组#

最长无重复子数组

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

动态规划。从左到右遍历整个数组 arr,计算以每个元素为右端的最长子数组存入 dp,其中最大的即为解。

    int maxLength(vector<int>& arr) {
        // write code here
        if(arr.size() == 0) return 0;
        vector<int> dp(arr.size(), 0);
        int max = 1;
        for(int i=1; i<dp.size(); ++i){
            int j = i-1;
            while (j >= dp[i-1]){
                if(arr[j] == arr[i])
                    break;
                --j;
            }
            dp[i] = j+1;
            int len = i - dp[i] + 1;
            if(len > max) max = len;
        }
        return max;
    }
全部评论

相关推荐

头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
昨天 17:48
中山大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务