Skip to content

Commit 5c15cc6

Browse files
authored
Merge pull request #1984 from dylan-jung/main
2 parents 807c844 + d958263 commit 5c15cc6

File tree

5 files changed

+103
-0
lines changed

5 files changed

+103
-0
lines changed

contains-duplicate/dylan-jung.cpp

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

house-robber/dylan-jung.cpp

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

two-sum/dylan-jung.cpp

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

0 commit comments

Comments
 (0)