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

最长无重复子数组

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

看到“最”就要想到动态规划

#include <map>
class Solution {
public:
    /**
     * 
     * @param arr int整型vector the array
     * @return int整型
     */
    int maxLength(vector<int>& arr) {
        // write code here
        if(arr.size() == 0){
            return 0;
        }
        int* d = new int[arr.size()];
        map<int, int> m;
        d[0] = 1;
        m[arr[0]] = 0;
        for(int i = 1 ; i < arr.size(); i++){
            int val = arr[i];
            if(m.find(val) == m.end()){
                m[val] = i;
                d[i] = d[i - 1] + 1;
            }
            else{
                int index = m[val];
                vector<int> remove_list;
                for(map<int, int>::iterator iter = m.begin(); iter != m.end(); iter++){
                    if(index >= iter->second){
                        remove_list.push_back(iter->first);
                    }
                }
                for(int j = 0; j < remove_list.size(); j++){
                    m.erase(remove_list[j]);
                }
                m[val] = i;
                d[i] = m.size();
                
            }
        }
        int max = -1;
        for(int i = 0 ; i < arr.size(); i++){
            if(max < d[i]){
                max = d[i];
            }
        }
        return max;
    }
};
全部评论

相关推荐

昨天 18:44
已编辑
中山职业技术学院 Java
投递文远知行等公司8个岗位
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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