题解一:
哈希表:找连续最长的数字序列,很容易联想到排序,但排序的时间复杂度O(nlogN)过大,判题容易超时。因此我们需要使用哈希表来快速查找,序列中是否存在与某个数相邻的数。用HashSet建立哈希表并去重,为了降低同一连续序列中重复查找的次数,我们先判断一个数字是否是连续序列的第一个值,如果是则循环搜索之后连续的值,如果不是则跳过。同时维护一个最长序列长度并返回。
import java.util.HashSet;
import java.util.Set;class Solution {public int longestConsecutive(int[] nums) {Set<Integer> set = new HashSet<>();for (int num : nums) {set.add(num);}int longest = 0;int temp = 0;for (int num : nums) {if (!set.contains(num - 1)) {while (set.contains(num)) {temp += 1;num++;}}if (temp > longest) longest = temp;temp = 0;}return longest;}
}