题目

image.png

思路

  • 通过哈希表来记录当前的key的最长连续长度,由于是连续的我们可以巧妙根据左右连续长度,更新两端当前最长度

    代码

    1. public int longestConsecutive(int[] nums) {
    2. HashMap<Integer, Integer> map = new HashMap<>();
    3. int max = 0;
    4. for (int i = 0; i < nums.length; i++) {
    5. if (map.containsKey(nums[i])) continue;
    6. int cur = 1, left = 0, right = 0;
    7. left = map.getOrDefault(nums[i] - 1, 0);
    8. right = map.getOrDefault(nums[i] + 1, 0);
    9. cur += left + right;
    10. map.put(nums[i] - left, cur);
    11. map.put(nums[i] + right, cur);
    12. map.put(nums[i], cur);
    13. max = Math.max(max, cur);
    14. }
    15. return max;
    16. }
    最长连续序列