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

数组中的最长连续子序列

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

相关推荐

草稿猫编程:查看图片
点赞 评论 收藏
分享
牛客316659795号:不是,证明hr初筛已经过了,要投给部门筛一遍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务