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

数组中的最长连续子序列

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

题目
图片说明
题解:先用map存储数组每个元素,再遍历数组每个元素,如果元素的前一个数在map里则不管,否则从这个数开始循环遍历后面每个数,直到数字不在map里为止,更新最大长度

class Solution {
public:
    /**
     * max increasing subsequence
     * @param arr int整型vector the array
     * @return int整型
     */
    int MLS(vector<int>& arr) {
        // write code here
        unordered_map<int,int>mp;
        for(auto& n:arr)mp[n]=1;
        int res=0;
        for(auto& n:arr)
        {
            if(mp.find(n-1)!=mp.end())continue;//前一个数在map里,该数不是起点
            else
            {
                int len=1;
                while(mp.find(n+1)!=mp.end())//循环判断后面的数是否在map里,统计长度
                {
                    len++;
                    n++;
                }
                res=max(res,len);
            }
        }
        return res;
    }
};
全部评论

相关推荐

10-21 23:48
蚌埠坦克学院
csgq:可能没hc了 昨天一面完秒挂
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务