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

相关推荐

05-20 13:59
门头沟学院 Java
米黑子米黑子:你这个成绩不争取下保研?
点赞 评论 收藏
分享
07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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