先用unordered_set去重,然后遍历哈希set中的元素x,当存在x-1时说明从x开始找得到的长度并不是最大,直接跳过,否则,从x开始,不断寻找x+1,x+2...,记录最大长度。

class Solution {
public:
    /**
     * max increasing subsequence
     * @param arr int整型vector the array
     * @return int整型
     */
    int MLS(vector<int>& arr) {
        unordered_set<int> un_set{};
        for(auto x: arr) un_set.insert(x);
        int max_len{};
        for(auto x: un_set){
            if(!un_set.count(x-1)){
                int cur_x=x;
                int cur_len=1;
                while(un_set.count(cur_x+1)){
                    cur_x++;
                    cur_len++;
                }
                max_len=max(max_len,cur_len);
            }
        }
        return max_len;
    }
};