题目链接:https://leetcode.com/problems/longest-consecutive-sequence/
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
Your algorithm should run in O(n) complexity.
Example:
Input: [100, 4, 200, 1, 3, 2]
Output: 4
Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]
. Therefore its length is 4.
思路一:先sort再查找
AC 4ms:
class Solution {
public int longestConsecutive(int[] nums) {
if(nums.length==0||nums.length==1)
return nums.length;
Arrays.sort(nums);
int maxLen=1;
int count=1;
for(int i=1;i<nums.length;i++){
if(nums[i]==nums[i-1])
continue;
else if(nums[i]-1==nums[i-1]){
count++;
maxLen=Math.max(maxLen,count);
}else
count=1;
}
return maxLen;
}
}
思路二:用Set
class Solution {
public int longestConsecutive(int[] nums) {
if(nums.length==0||nums.length==1)
return nums.length;
int maxLen=1;
Set<Integer> set=new HashSet();
for(int i=0;i<nums.length;i++){
set.add(nums[i]);
}
for(int i:set){
if(!set.contains(i-1)){
int count=1;
while(set.contains(i+1)){
i++;
count++;
}
maxLen=Math.max(maxLen,count);
}
}
return maxLen;
}
}