程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> leetcode - Longest Consecutive Sequence

leetcode - Longest Consecutive Sequence

編輯:C++入門知識

leetcode - 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.

class Solution {
public:
    int longestConsecutive(std::vector &num) {
		std::unordered_set a;
		std::unordered_set b;
		for (int i = 0; i < num.size(); i++)
		{
			a.insert(num[i]);
		}
		int max = 0;
		for (int i = 0; i < num.size(); i++)
		{
			if(b.find(num[i]) != b.end()) continue;
			int cnt = 1,n = num[i],m = num[i];
			while(a.find(--n) != a.end()) b.insert(n),cnt++;
			while(a.find(++m) != a.end()) b.insert(m),cnt++;
			max = max > cnt ? max : cnt;
		}
		return max;
    }
};


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved