题目:
给定一个未排序的整数组 nums ,找出数字连续的最长序列(原数组中不需要序列元素连续)的长度。
请设计并实现O的时间复杂性(n) 算法解决了这个问题。
示例 1:
输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列 [1, 2, 3, 4]。它的长度是 4。
示例 2:
输入:nums = [0,3,7,2,8,4,6,0
输出:9
代码实现:
class Solution { public int longestConsecutive(int[] nums) { Set<Integer> num_set = new HashSet<Integer>(); for (int num : nums) { num_set.add(num); } int longestStreak = 0; for (int num : num_set) { if (!num_set.contains(num - 1)) { int currentNum = num; int currentStreak = 1; while (num_set.contains(currentNum + 1)) { currentNum += 1; currentStreak += 1; } longestStreak = Math.max(longestStreak, currentStreak); } } return longestStreak; }}