Skip to content

Commit 602ff70

Browse files
authored
Merge pull request #701 from donghyeon95/main
[donghyeon95] Week 1
2 parents 933b272 + 5487b35 commit 602ff70

File tree

5 files changed

+151
-0
lines changed

5 files changed

+151
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
public boolean containsDuplicate(int[] nums) {
5+
/*
6+
* -- 풀이 --
7+
* nums를 순회하면서 HashSet에 데이터를 넣어서 중복되었는 지 확인한다.
8+
*
9+
* -- 시간 복잡도 --
10+
* 길이 N인 nums를 순환하는데 대한 시간 복잡도 => O(N)
11+
* hashSet의 add에 대한 시간 복잡도 => O(1)
12+
* 전체 시간 복잡도 O(1)*O(N) =O(n)
13+
* ------------------------------------------
14+
*
15+
* -- 공간 복잡도 --
16+
* 길이 N인 nums를 넣을 Hashset이 있어야 하기에 O(N)
17+
* -------------------------------------------
18+
*/
19+
20+
// 중복을 확인할 수 있는 set 선언
21+
HashSet<Integer> hashSet = new HashSet<>();
22+
23+
for (int num: nums) {
24+
// set에 있다면
25+
if (!hashSet.add(num)) return true;
26+
}
27+
28+
return false;
29+
}
30+
}
31+

house-robber/donghyeon95.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import java.util.Arrays;
2+
3+
class Solution {
4+
private int[] dp;
5+
6+
public int rob(int[] nums) {
7+
// 점화식
8+
// f(x) = f(나를 선택) + f(나를 안선택)
9+
// 100개라서 가능은 할 거 같다.
10+
11+
dp = new int[100];
12+
13+
// 0도 가능 하다
14+
Arrays.fill(dp, -1);
15+
16+
17+
return recurse(nums, 0);
18+
19+
}
20+
21+
public int recurse(int[] nums, int index) {
22+
// 종료 조건
23+
if (index >= nums.length) return 0;
24+
25+
// 이미 한번 처리가 되었다면
26+
if (dp[index] != -1) return dp[index];
27+
28+
int result = 0;
29+
30+
// 나를 선택하는 경우,
31+
result = Math.max(recurse(nums, index+2)+nums[index], result);
32+
33+
// 나를 선택하지 않는 경우,
34+
result = Math.max(recurse(nums, index+1), result);
35+
36+
dp[index] = result;
37+
return result;
38+
}
39+
}
40+
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import java.util.HashSet;
2+
3+
public class Solution {
4+
public int longestConsecutive(int[] nums) {
5+
HashSet<Integer> set = new HashSet<>();
6+
for (int num : nums) {
7+
set.add(num);
8+
}
9+
10+
int maxStreak = 0;
11+
12+
for (int num : nums) {
13+
// 내가 시작 값이라면
14+
if (!set.contains(num - 1)) {
15+
int currentNum = num;
16+
int currentStreak = 1;
17+
18+
// 나로부터 연결되는 값을 찾는다.
19+
while (set.contains(currentNum + 1)) {
20+
currentNum++;
21+
currentStreak++;
22+
}
23+
24+
maxStreak = Math.max(maxStreak, currentStreak);
25+
}
26+
}
27+
28+
return maxStreak;
29+
}
30+
}
31+
32+
33+
34+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import java.util.ArrayList;
2+
import java.util.Collections;
3+
import java.util.HashMap;
4+
import java.util.List;
5+
import java.util.Map;
6+
7+
class Solution {
8+
public int[] topKFrequent(int[] nums, int k) {
9+
HashMap<Integer, Integer> hm = new HashMap<>();
10+
11+
for (int num: nums) {
12+
hm.put(num, hm.getOrDefault(num, 0)+1);
13+
}
14+
15+
List<Map.Entry<Integer, Integer>> list = new ArrayList<>(hm.entrySet());
16+
list.sort(Map.Entry.comparingByValue(Collections.reverseOrder()));
17+
18+
int index = 1;
19+
ArrayList<Integer> answer = new ArrayList<>();
20+
for (Map.Entry<Integer, Integer> entry: list) {
21+
if (index > k) break;
22+
answer.add(entry.getKey());
23+
index++;
24+
}
25+
26+
return answer.stream().mapToInt(Integer::intValue).toArray();
27+
}
28+
}
29+

valid-palindrome/donghyeon95.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/* 첫 시도
2+
leetCode 기준 18ms
3+
*/
4+
5+
class Solution {
6+
public boolean isPalindrome(String s) {
7+
// 1. remove non-alphanumeric using regex
8+
String alphanumeric = s.replaceAll("[^a-zA-Z0-9]", "");
9+
10+
// 2. change lowerCase
11+
String lowerCase = alphanumeric.toLowerCase();
12+
13+
// 3. compare reverse String
14+
return lowerCase.contentEquals(new StringBuffer(lowerCase).reverse());
15+
}
16+
}
17+

0 commit comments

Comments
 (0)