Longest Consecutive Sequence

来源:互联网 发布:delphi sql储存过程 编辑:程序博客网 时间:2024/06/06 18:18

问题来源: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);    }}
0 0
原创粉丝点击