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.
想法比较直接,就是先排序,然后慢慢去里面遍历找连续的element。
需要注意这么几点:
1.如果数组里只有1个元素,那么直接回复1.
2.一定要考虑duplicate的情况,因为比如排序后为1,1,1,2,3,一定要跳过重复的元素。
程序如下:
package testAndfun; import java.util.Arrays; public class LongestConsecutiveSequence { public static void main(String[] args){ LongestConsecutiveSequence lcs = new LongestConsecutiveSequence(); int[] input = {1,0,-1,1}; System.out.println(lcs.longestConsecutive(input)); } public int longestConsecutive(int[] num) { if(num.length<=1) return num.length; int count =1 ; int tmp=1; Arrays.sort(num); //System.out.println(Arrays.toString(num)); int i=0; while(i<num.length-1){ if(num[i]==num[i+1]-1) tmp++; if(num[i]==num[i+1]){ if(tmp>count){ count = tmp; } i++; continue; } if(num[i]!=num[i+1]-1 || i==num.length-2){ if(tmp>count) { count = tmp; } tmp =1; } i++; } return count; } }
【Leetcode】Longest Consecutive Sequence
原文地址:http://blog.csdn.net/qbt4juik/article/details/42488879