1. set 会自动排序。
  2. 使用ans = 1, q =1 以及 比一个删除一个得方式,进行判断最长子序列。
  3. 其余看注释。
class Solution {
public:
    /**
     * max increasing subsequence
     * @param arr int整型vector the array
     * @return int整型
     */
    int MLS(vector<int>& arr) {
        // write code here

        if(!arr.size()){
            return 0;
        }

        set<int> s;//默认有序

        for(auto x: arr){
            s.insert(x);
        }

        int ans =1, q = 1, pre = *s.begin();// q相当与很多队列得起始点得计数

        s.erase(pre);//set 删除元素

        while(s.size()){
            int now = *s.begin();
            s.erase(now);//删除,为下一次比较做预备

            if(pre == now -1){//连续
                if(ans<++q) ans = q;// 先加加,然后直接赋值即可。
            }else q = 1;//新的队列

            pre = now;//这样就可以对应pre是那个删掉的元素

        }

        return ans;


    }
};