File tree Expand file tree Collapse file tree 5 files changed +103
-0
lines changed
longest-consecutive-sequence Expand file tree Collapse file tree 5 files changed +103
-0
lines changed Original file line number Diff line number Diff line change 1+ // TC: O(N), SC: O(N)
2+
3+ class Solution {
4+ public:
5+ bool containsDuplicate (vector<int >& nums) {
6+ unordered_set<int > s;
7+ for (auto item: nums) {
8+ if (s.count (item) > 0 ) return true ;
9+ s.insert (item);
10+ }
11+ return false ;
12+ }
13+ };
Original file line number Diff line number Diff line change 1+ // TC: O(N), SC: O(1)
2+ class Solution {
3+ public:
4+ int rob (vector<int >& nums) {
5+ if (nums.size () == 1 ) return nums[0 ];
6+
7+ int prev2 = nums[0 ]; // dp[i-2]
8+ int prev1 = max (nums[0 ], nums[1 ]); // dp[i-1]
9+
10+ for (int i = 2 ; i < nums.size (); i++) {
11+ int cur = max (prev1, prev2 + nums[i]);
12+ prev2 = prev1;
13+ prev1 = cur;
14+ }
15+
16+ return prev1;
17+ }
18+ };
Original file line number Diff line number Diff line change 1+ // TC: O(N), SC: O(N)
2+
3+ class Solution {
4+ public:
5+ int longestConsecutive (vector<int >& nums) {
6+ auto s = unordered_set<int >();
7+ for (int it : nums) {
8+ s.insert (it);
9+ }
10+
11+ int m = 0 ;
12+ for (int it : s) {
13+ if (s.count (it-1 ) > 0 ) continue ;
14+
15+ int cnt = 0 ;
16+ while (s.count (it+cnt) > 0 ){
17+ cnt++;
18+ }
19+ m = max (m, cnt);
20+ }
21+
22+ return m;
23+ }
24+ };
Original file line number Diff line number Diff line change 1+ // TC: O(N), SC: O(N)
2+ class Solution {
3+ public:
4+ vector<int > topKFrequent (vector<int >& nums, int k) {
5+ unordered_map<int , int > freq;
6+ freq.reserve (nums.size () * 2 );
7+ for (int x : nums) {
8+ ++freq[x];
9+ }
10+
11+ int n = nums.size ();
12+ vector<vector<int >> bucket (n + 1 );
13+ for (auto & p : freq) {
14+ int num = p.first ;
15+ int cnt = p.second ;
16+ bucket[cnt].push_back (num);
17+ }
18+
19+ vector<int > ans;
20+ ans.reserve (k);
21+
22+ for (int count = n; count >= 1 && ans.size () < k; --count) {
23+ for (int num : bucket[count]) {
24+ ans.push_back (num);
25+ if (ans.size () == k) break ;
26+ }
27+ }
28+
29+ return ans;
30+ }
31+ };
Original file line number Diff line number Diff line change 1+ // TC: O(N), SC: O(N)
2+
3+ class Solution {
4+ public:
5+ vector<int > twoSum (vector<int >& nums, int target) {
6+ unordered_map<int , int > m;
7+ for (int i = 0 ; i < nums.size (); i++) {
8+ m[nums[i]] = i;
9+ }
10+ for (int first = 0 ; first < nums.size (); first++) {
11+ if (m.count (target - nums[first]) > 0 && first != m[target - nums[first]]) {
12+ return {first, m[target - nums[first]]};
13+ }
14+ }
15+ return {};
16+ }
17+ };
You can’t perform that action at this time.
0 commit comments