题解 | #数组中最长的连续子序列#
数组中的最长连续子序列
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; } };