将元素都存储到集合里面, 遍历集合里面的元素, 如果这个元素是序列的起点(num-1不在set中), 则向后找后续的序列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class Solution {
public int longestConsecutive(int[] nums) { Set<Integer> s = new HashSet<>(); for (int num : nums) { s.add(num); } int ans = 0; for (Integer num : s) { if (!s.contains(num-1)) { int n = num; int len = 1; while (s.contains(++n)) { len++; } ans = Math.max(ans, len); } } return ans; } }
|