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

数组中的最长连续子序列

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

相关推荐

菜鸡29号:根据已有信息能初步得出以下几点: 1、硕士排了大本和大专 2、要求会多语言要么是招人很挑剔要么就是干的活杂 3、给出校招薪资范围过于巨大,说明里面的薪资制度(包括涨薪)可能有大坑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务