先用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;
}
};