File tree Expand file tree Collapse file tree
longest-consecutive-sequence Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ // Time Complexity: O(n) on average
2+ // Space Complexity: O(n)
3+
4+ #include < unordered_set>
5+
6+ class Solution {
7+ public:
8+ bool containsDuplicate (vector<int >& nums) {
9+ unordered_set<int > seen;
10+ for (int n: nums) {
11+ if (seen.count (n)) return true ;
12+ seen.insert (n);
13+ }
14+
15+ return false ;
16+ }
17+ };
Original file line number Diff line number Diff line change 1+ // Time Complexity: O(n)
2+ // Space Complexity: O(n), including memoization and recursion stack
3+
4+ class Solution {
5+ public:
6+
7+ int rob (vector<int >& nums) {
8+ int N = nums.size ();
9+ vector<int > cache (N, -1 );
10+
11+ function<int (int )> recur = [&](int cur) -> int {
12+ if (cur >= N) return 0 ;
13+ if (cache[cur] != -1 ) return cache[cur];
14+
15+ int a = recur (cur + 1 );
16+ int b = recur (cur + 2 ) + nums[cur];
17+
18+ return cache[cur] = max (a, b);
19+ };
20+
21+ return recur (0 );
22+ }
23+ };
Original file line number Diff line number Diff line change 1+ // Time Complexity: O(n) on average
2+ // Space Complexity: O(n)
3+
4+ class Solution {
5+ public:
6+ int longestConsecutive (vector<int >& nums) {
7+ int N = nums.size ();
8+ unordered_set<int > s (nums.begin (), nums.end ());
9+ int best = 0 ;
10+ for (int x: s) {
11+ if (s.count (x - 1 )) continue ;
12+
13+ int len = 1 ;
14+ while (s.count (x + len)) len++;
15+ best = max (best, len);
16+ }
17+
18+ return best;
19+ }
20+ };
Original file line number Diff line number Diff line change 1+ // Time Complexity: O(n) on average
2+ // Space Complexity: O(n)
3+
4+ #include < unordered_map>
5+
6+ class Solution {
7+ public:
8+ vector<int > topKFrequent (vector<int >& nums, int k) {
9+ unordered_map<int , int > freq;
10+ for (int n: nums) freq[n]++;
11+
12+ vector<vector<int >> bucket (nums.size () + 1 );
13+ for (auto & [num, f]: freq) bucket[f].push_back (num);
14+
15+
16+ vector<int > res;
17+ for (int f = nums.size (); f >= 1 && res.size () < k; f--)
18+ for (int n: bucket[f]) res.push_back (n);
19+
20+ return res;
21+ }
22+ };
Original file line number Diff line number Diff line change 1+ // Time Complexity: O(n) on average
2+ // Space Complexity: O(n)
3+
4+ #include < unordered_map>
5+
6+ class Solution {
7+ public:
8+ vector<int > twoSum (vector<int >& nums, int target) {
9+ unordered_map<int , int > index_of;
10+
11+ for (int i = 0 ; i < nums.size (); i++) {
12+ int complement = target - nums[i];
13+
14+ if (index_of.count (complement)) {
15+ return {index_of[complement], i};
16+ }
17+ index_of[nums[i]] = i;
18+ }
19+ return {};
20+ }
21+ };
You can’t perform that action at this time.
0 commit comments