关闭

Longest Consecutive Sequence

标签: C++leetcode
55人阅读 评论(0) 收藏 举报
分类:

一、问题描述

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.

二、思路

本题题意是求出最大的连续序列的长度。我们先对数组排序,然后遍历整个数组,遇到相同元素,跳过,遇到满足连续特性的数组,我们将临时变量加一,遇到不满足条件的元素,我们首先判断当前临时变量是否大于等于最大长度,如果满足,则更新max_len,同时不管是否满足条件都将临时变量置一,意味着重新开始。最后挑出循环后继续判断临时变量是否大于最大长度,如果大于,则需要更新最大长度。

三、代码

class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        int temp = 1, max_len = 1;
        for(int i = 1; i < nums.size(); ++i){
            if(nums[i] == nums[i - 1])
                continue;
            else if(nums[i - 1] + 1 == nums[i]){
                temp++;
            }else{
                if(temp >= max_len){
                    max_len = temp;
                }
                temp = 1;
            }
        }
         if(temp > max_len){
            max_len = temp;
        }
        return max_len;
    }
};


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:122425次
    • 积分:4409
    • 等级:
    • 排名:第7027名
    • 原创:341篇
    • 转载:33篇
    • 译文:0篇
    • 评论:5条
    最新评论