给定一个未排序的整数数组,找出最长连续序列的长度。
要求算法的时间复杂度为 O(n)。
示例:
输入: [100, 4, 200, 1, 3, 2]
输出: 4
解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。
思路:存入map中,每次以当前元素为序列的第一个数字,依次向下寻炸有没有对应的元素
提交的代码:
class Solution {
public int longestConsecutive(int[] nums) {
if(nums.length==0)
{
return 0;
}
Map<Integer,Integer> map = new HashMap<>();
int i;
for(i=0;i<nums.length;i++)
{
map.put(nums[i], 1);
}
int sum=1,max=1,t;
for(i=0;i<nums.length;i++)
{
if(!map.containsKey(nums[i]-1))
{
t = nums[i];
sum = 1;
while(map.containsKey(t+1))
{
sum++;
t++;
}
}
max = Math.max(max, sum);
}
return max;
}
}