Advertisement
sidjha57

Longest_Consecutive_Subsequence

Sep 17th, 2022
781
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | Source Code | 0 0
  1. class Solution {
  2. public:
  3.    
  4.     int bfs (int st, unordered_map<int,int>& num, unordered_map<int,bool>& vis) {
  5.         queue<int> q;
  6.         q.push(st);
  7.         int cmp = 0;
  8.         vis[st] = 1;
  9.         while (!q.empty()) {
  10.             int cur = q.front();
  11.             q.pop();
  12.             cmp++;
  13.             if (num.find(cur+1) != num.end() && vis.find(cur+1) == vis.end()) {
  14.                 q.push(cur+1), vis[cur+1] = 1;
  15.             }
  16.             if (num.find(cur-1) != num.end() && vis.find(cur-1) == vis.end()) {
  17.                 q.push(cur-1), vis[cur-1] = 1;
  18.             }
  19.         }
  20.        
  21.         return cmp;
  22.        
  23.     }
  24.     int longestConsecutive(vector<int>& nums) {
  25.        
  26.         unordered_map<int,int> num;
  27.         unordered_map<int,bool> vis;
  28.         int ans = 0;
  29.        
  30.         for (int i=0; i<nums.size(); i++) num[nums[i]] = 1;
  31.        
  32.        
  33.         for (auto node : num)
  34.             if (vis.find(node.first) == vis.end())
  35.                 ans = max(ans,bfs(node.first,num,vis));
  36.  
  37.        
  38.         return ans;
  39.     }
  40. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement