给定一个未排序的整数数组,找出最长连续序列的长度。
时间: 2023-04-29 13:00:04 浏览: 108
题目描述:
给定一个未排序的整数数组,找出最长连续序列的长度。
解题思路:
1. 先将数组排序,然后遍历数组,找到最长的连续序列。
2. 使用哈希表,将每个数存入哈希表中,然后遍历数组,对于每个数,分别向左和向右扩展,直到找到不连续的数为止,记录下最长的连续序列长度。
代码实现:
方法一:
```
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
if(nums.empty()) return 0;
sort(nums.begin(), nums.end());
int res = 1, cnt = 1;
for(int i = 1; i < nums.size(); i++){
if(nums[i] == nums[i-1] + 1) cnt++;
else if(nums[i] == nums[i-1]) continue;
else{
res = max(res, cnt);
cnt = 1;
}
}
return max(res, cnt);
}
};
```
方法二:
```
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
unordered_set<int> s(nums.begin(), nums.end());
int res = 0;
for(int num : nums){
if(!s.count(num)) continue;
s.erase(num);
int pre = num - 1, next = num + 1;
while(s.count(pre)) s.erase(pre--);
while(s.count(next)) s.erase(next++);
res = max(res, next - pre - 1);
}
return res;
}
};
```
阅读全文