题解 | #数组中最长的连续子序列#
数组中的最长连续子序列
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;
}
};
阿里云工作强度 667人发布