题解 | #数组中的最长连续子序列#

数组中的最长连续子序列

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

先用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;
    }
};
全部评论

相关推荐

头像
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务