标签:
问题来源:https://leetcode.com/problems/longest-consecutive-sequence/
import java.util.Arrays;
/**
*
* <p>
* ClassName LongestConsecutiveSequence
* </p>
* <p>
* Description 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.
* </p>
*
* @author TKPad wangx89@126.com
* <p>
* Date 2015年3月20日 下午2:56:57
* </p>
* @version V1.0.0
*
*/
public class LongestConsecutiveSequence {
public int longestConsecutive(int[] num) {
int maxLength = 1;
if (num == null || num.length <= 1) {
return num.length;
}
Arrays.sort(num);
int count = 1;
for (int i = 1; i < num.length; i++) {
if (1 == num[i] - num[i - 1]) {
count++;
if (count > maxLength) {
maxLength = count;
}
} else if (num[i] == num[i - 1]) {// 如果相等,计数器不变,maxLength不更新
continue;
} else {
count = 1;
}
}
return maxLength;
}
public static void main(String[] args) {
// int longestConsecutive = new LongestConsecutiveSequence().longestConsecutive(new int[] { 100, 4, 200, 1, 3, 2 });
// int longestConsecutive = new LongestConsecutiveSequence().longestConsecutive(new int[] { 100});
// int longestConsecutive = new LongestConsecutiveSequence().longestConsecutive(new int[] {});
int longestConsecutive = new LongestConsecutiveSequence().longestConsecutive(new int[] { 1, 2, 0, 1 });
System.out.println(longestConsecutive);
}
}
标签:
原文地址:http://blog.csdn.net/shijiebei2009/article/details/44492155