首页 > 代码库 > LeetCode Longest Consecutive Sequence
LeetCode Longest Consecutive Sequence
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。