Skip to content

Commit 4b8f7e0

Browse files
authored
Merge pull request #790 from mintheon/main
[mintheon] Week3
2 parents 740d882 + 5a8b85e commit 4b8f7e0

File tree

4 files changed

+111
-0
lines changed

4 files changed

+111
-0
lines changed

combination-sum/mintheon.java

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import java.util.ArrayDeque;
2+
import java.util.ArrayList;
3+
import java.util.Deque;
4+
import java.util.List;
5+
6+
class Solution {
7+
/**
8+
시간복잡도: O(2^n)
9+
공간복잡도: O(n)
10+
*/
11+
public List<List<Integer>> combinationSum(int[] candidates, int target) {
12+
List<List<Integer>> answer = new ArrayList<>();
13+
Deque<Integer> nums = new ArrayDeque<>();
14+
15+
backtracking(candidates, answer, nums, target, 0, 0);
16+
17+
return answer;
18+
}
19+
20+
protected void backtracking(int[] candidates, List<List<Integer>> answer, Deque<Integer> nums, int target, int start, int total) {
21+
if(total > target) {
22+
return;
23+
}
24+
25+
if (total == target) {
26+
answer.add(new ArrayList<>(nums));
27+
return;
28+
}
29+
30+
for(int i = start; i < candidates.length; i++) {
31+
int num = candidates[i];
32+
nums.push(num);
33+
34+
backtracking(candidates, answer, nums, target, i, total + num);
35+
nums.pop();
36+
}
37+
}
38+
}
+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution {
2+
/**
3+
공간복잡도: O(n)
4+
시간복잡도: O(n)
5+
*/
6+
public int[] productExceptSelf(int[] nums) {
7+
int[] answer = new int[nums.length];
8+
9+
answer[0] = 1;
10+
for(int i = 1; i < nums.length; i++) {
11+
answer[i] = answer[i - 1] * nums[i - 1];
12+
}
13+
14+
int value = 1;
15+
for(int i = nums.length - 1; i >= 0; i--) {
16+
17+
answer[i] = answer[i] * value;
18+
value *= nums[i];
19+
}
20+
21+
return answer;
22+
}
23+
}

reverse-bits/mintheon.java

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
public class Solution {
2+
/**
3+
시간복잡도: O(1) -> 루프는 항상 32번 반복되기 때문
4+
공간복잡도: O(1)
5+
*/
6+
7+
// you need treat n as an unsigned value
8+
public int reverseBits(int n) {
9+
int answer = 0;
10+
int index = 31;
11+
12+
while(n != 0) {
13+
// n&1 : 마지막 비트를 추출
14+
// << : 0을 패딩처리 시켜서 상위 자리수로 올려버림
15+
answer += (n & 1) << index;
16+
17+
// >>> : 부호 상관없이 오른쪽으로 비트 이동
18+
n = n >>> 1;
19+
index--;
20+
}
21+
22+
return answer;
23+
}
24+
}

two-sum/mintheon.java

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import java.util.HashMap;
2+
import java.util.Map;
3+
4+
class Solution {
5+
/**
6+
공간복잡도: O(n)
7+
시간복잡도: O(n)
8+
*/
9+
10+
public int[] twoSum(int[] nums, int target) {
11+
Map<Integer, Integer> numMap = new HashMap<>();
12+
13+
for(int i = 0; i < nums.length; i++) {
14+
numMap.put(nums[i], i);
15+
}
16+
17+
for(int i = 0; i < nums.length; i++) {
18+
int pairNum = target - nums[i];
19+
if(numMap.containsKey(pairNum) && numMap.get(pairNum) != i) {
20+
return new int[]{i, numMap.get(target - nums[i])};
21+
}
22+
}
23+
24+
return new int[2];
25+
}
26+
}

0 commit comments

Comments
 (0)