Skip to content

Commit 5e2d660

Browse files
authored
[parkhojeong] WEEK 01 Solutions (#2927)
* contains-duplicate solution * two-sum solution * top-k-frequent-elements solution * longest-consecutive-sequence solution * house-robber solution * top-k-frequent-elements solution * Fix GitHub username in solution filenames
1 parent 0035321 commit 5e2d660

5 files changed

Lines changed: 103 additions & 0 deletions

File tree

‎contains-duplicate/parkhojeong.cpp‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
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+
};

‎house-robber/parkhojeong.cpp‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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+
};
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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+
};
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
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+
};

‎two-sum/parkhojeong.cpp‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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+
};

0 commit comments

Comments
 (0)