Longest Consecutive Sequence

来源:互联网 发布:opta数据中文 编辑:程序博客网 时间:2024/06/13 21:15

之前竟然还遗漏了这道两年前做过的题。

对于n的复杂度,不一定要一次循环才行,可以多个循环嘛!!!可以多个循环嘛!!!可以多个循环嘛!!!

public class Solution {    public int longestConsecutive(int[] num) {        Set<Integer> set = new HashSet<>();        for (int i: num) {            set.add(i);        }        int max = 0;        for (int i: num) {            if (set.contains(i)) {                int count = 1;                set.remove(i);                int low = i - 1;                while (set.contains(low)) {                    set.remove(low);                    count++;                    low--;                }                int high = i + 1;                while (set.contains(high)) {                    set.remove(high);                    count++;                    high++;                }                max = Math.max(max, count);            }        }        return max;    }}

Given an unsorted array of integers, find the length of the longest consecutive elements sequence.

For example,
Given [100, 4, 200, 1, 3, 2],
The longest consecutive elements sequence is [1, 2, 3, 4]. Return its length: 4.

Your algorithm should run in O(n) complexity.








0 0