Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- int bfs (int st, unordered_map<int,int>& num, unordered_map<int,bool>& vis) {
- queue<int> q;
- q.push(st);
- int cmp = 0;
- vis[st] = 1;
- while (!q.empty()) {
- int cur = q.front();
- q.pop();
- cmp++;
- if (num.find(cur+1) != num.end() && vis.find(cur+1) == vis.end()) {
- q.push(cur+1), vis[cur+1] = 1;
- }
- if (num.find(cur-1) != num.end() && vis.find(cur-1) == vis.end()) {
- q.push(cur-1), vis[cur-1] = 1;
- }
- }
- return cmp;
- }
- int longestConsecutive(vector<int>& nums) {
- unordered_map<int,int> num;
- unordered_map<int,bool> vis;
- int ans = 0;
- for (int i=0; i<nums.size(); i++) num[nums[i]] = 1;
- for (auto node : num)
- if (vis.find(node.first) == vis.end())
- ans = max(ans,bfs(node.first,num,vis));
- return ans;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement