zoukankan      html  css  js  c++  java
  • 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.

        map<int, int> mp;
    
        int longestConsecutive(vector<int> &num) 
        {
            int i;
            // map all the numbers and set value to 1 (not accessed state)
            for (i = 0; i < num.size(); i++)
            {
                mp[num[i]] = 1;
            }
    
            int res = 0;
            for (i = 0; i<num.size(); i++){
                int sum = 1;
                if (mp.count(num[i]))
                {
                    mp[num[i]] = 0;
                    int left = num[i] - 1;
                    // if the left number exist in the map and not accessed
                    while (mp.count(left) && mp[left] != 0)
                    {
                        mp[left--] = 0;
                        sum++;
                    }
                    int right = num[i] + 1;
                    // if the right member exist in the map and not accessed
                    while (mp.count(right) && mp[right] != 0)
                    {
                        mp[right++] = 0;
                        sum++;
                    }
                }
                if (res<sum)
                    res = sum;
            }
            return res;
        };
    int _tmain(int argc, _TCHAR* argv[])
    {
        Solution *sln = new Solution();
    vector<int> svec;
        svec.push_back(100);
        svec.push_back(4);
        svec.push_back(200);
        svec.push_back(3);
        svec.push_back(101);
        svec.push_back(2);
        svec.push_back(3);
        svec.push_back(99);
        svec.push_back(2);
        svec.push_back(98);
        svec.push_back(96);
        svec.push_back(97);
    
        int ret = sln->longestConsecutive(svec);
        cout << ret << endl;
    
        return 0;
    }
  • 相关阅读:
    秒杀应用的MySQL数据库优化
    mongodb三种存储引擎高并发更新性能专题测试
    一次项目实践中DBCP数据库连接池性能优化
    初识中间件之消息队列
    Android性能测试--内存
    JVM源码分析之栈溢出完全解读
    case when then end
    工厂模式
    单例模式
    隐藏响应的server,X-Powered-By
  • 原文地址:https://www.cnblogs.com/pengpenghappy/p/3864157.html
Copyright © 2011-2022 走看看