標籤:style blog color io ar for div sp log
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.
由於演算法複雜度是O(n) ,所以不能直接排序。可以把數組存入hashset,考察每個元素的相鄰元素是否在set內,把考察過的元素刪除。
1 public class Solution { 2 public int longestConsecutive(int[] num) { 3 HashSet<Integer> hashSet; 4 5 if (num.length==0) { 6 return 0; 7 } 8 if (num.length==1) { 9 return 1;10 }11 hashSet=new HashSet<>();12 13 for (int i = 0; i < num.length; i++) {14 hashSet.add(num[i]);15 }16 int res=1;17 for (int i = 0; i < num.length; i++) {18 int tmplen=1;19 int tmpnum=num[i]+1;20 while (hashSet.contains(tmpnum)) {21 tmplen++;22 hashSet.remove(tmpnum);23 tmpnum++;24 }25 tmpnum=num[i]-1;26 while (hashSet.contains(tmpnum)) {27 tmplen++;28 hashSet.remove(tmpnum);29 tmpnum--;30 }31 if (tmplen>res) {32 res=tmplen;33 }34 35 }36 return res;37 }38 }
LeetCode Longest Consecutive Sequence