Skip to content

Commit 7ff6011

Browse files
authored
Merge pull request #1164 from jinhyungrhee/main
[jinhyungrhee] WEEK 01 solutions
2 parents 0e475d7 + 713ed94 commit 7ff6011

File tree

5 files changed

+124
-0
lines changed

5 files changed

+124
-0
lines changed

contains-duplicate/jinhyungrhee.java

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import java.util.*;
2+
class Solution {
3+
public boolean containsDuplicate(int[] nums) {
4+
/**
5+
avg : O(NlogN)
6+
worst : O(N^2)
7+
*/
8+
Arrays.sort(nums);
9+
10+
for (int i = 1; i < nums.length; i++) {
11+
if (nums[i-1] == nums[i]) return true;
12+
}
13+
14+
return false;
15+
}
16+
}

house-robber/jinhyungrhee.java

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import java.util.*;
2+
class Solution {
3+
4+
// dfs with memoization => O(N)
5+
public int rob(int[] nums) {
6+
Map<Integer,Integer> memo = new HashMap<>();
7+
return dfs(0, nums, memo);
8+
}
9+
10+
public int dfs(int start, int[] nums, Map<Integer, Integer> memo) {
11+
if (memo.containsKey(start)) return memo.get(start);
12+
if (start >= nums.length) {
13+
memo.put(start, 0);
14+
} else {
15+
memo.put(start, Math.max(
16+
nums[start] + dfs(start + 2, nums, memo),
17+
dfs(start + 1, nums, memo))
18+
);
19+
}
20+
return memo.get(start);
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
public int longestConsecutive(int[] nums) {
5+
Set<Integer> table = new HashSet<>();
6+
int longest = 0;
7+
8+
for(int n : nums) {
9+
table.add(n);
10+
}
11+
12+
// O(N)
13+
for (int num : table) {
14+
if (!table.contains(num - 1)) {
15+
int currentNum = num;
16+
int currentStreak = 1;
17+
18+
while (table.contains(currentNum + 1)) {
19+
currentNum++;
20+
currentStreak++;
21+
}
22+
longest = Math.max(longest, currentStreak);
23+
}
24+
}
25+
26+
/** TIME OUT 발생!
27+
*
28+
for (int n : nums) {
29+
if (table.contains(n - 1)) continue;
30+
int len = 1;
31+
while (table.contains(n + len)){
32+
len++;
33+
}
34+
longest = Math.max(len, longest);
35+
}
36+
*/
37+
38+
return longest;
39+
}
40+
}
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import java.util.*;
2+
import java.util.stream.*;
3+
4+
class Solution {
5+
public int[] topKFrequent(int[] nums, int k) {
6+
7+
Map<Integer, Integer> map = new HashMap<>();
8+
for(int n : nums) {
9+
if(!map.containsKey(n)) {
10+
map.put(n, 1);
11+
} else {
12+
map.put(n, map.get(n) + 1);
13+
}
14+
}
15+
16+
Map<Integer, Integer> sortedMap = map.entrySet().stream()
17+
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
18+
.collect(Collectors.toMap(
19+
Map.Entry::getKey,
20+
Map.Entry::getValue,
21+
(oldVal, newVal) -> oldVal,
22+
LinkedHashMap::new
23+
));
24+
25+
List<Integer> list = sortedMap.keySet().stream().limit(k).toList();
26+
return list.stream().mapToInt(Integer::intValue).toArray();
27+
}
28+
}
29+

two-sum/jinhyungrhee.java

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution {
2+
3+
// Method1. brute-force => O(N^2)
4+
public int[] twoSum(int[] nums, int target) {
5+
int size = nums.length;
6+
int[] answer = new int[2];
7+
for (int i = 0; i < size; i++) {
8+
for (int j = i + 1; j < size; j++) {
9+
if (nums[i] + nums[j] == target) {
10+
answer[0] = i;
11+
answer[1] = j;
12+
}
13+
}
14+
}
15+
return answer;
16+
}
17+
}

0 commit comments

Comments
 (0)