Skip to content

Commit cf7a8d6

Browse files
authored
Merge pull request #1772 from hoyeongkwak/main
[hoyeongkwak] Week2 Solutions
2 parents 0b88304 + d1fb8ee commit cf7a8d6

File tree

5 files changed

+130
-0
lines changed

5 files changed

+130
-0
lines changed

3sum/hoyeongkwak.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
Time Complexity : O(n^2)
3+
Space Complexity : O(1)
4+
*/
5+
class Solution {
6+
public List<List<Integer>> threeSum(int[] nums) {
7+
List<List<Integer>> result = new ArrayList<>();
8+
Arrays.sort(nums);
9+
10+
for (int i = 0; i < nums.length - 2; i++) {
11+
if (i > 0 && nums[i] == nums[i - 1]) continue;
12+
int low = i + 1;
13+
int high = nums.length - 1;
14+
while (low < high) {
15+
int threeSum = nums[i] + nums[low] + nums[high];
16+
if (threeSum < 0) {
17+
low = low + 1;
18+
} else if (threeSum > 0) {
19+
high = high - 1;
20+
} else {
21+
result.add(Arrays.asList(nums[i], nums[low], nums[high]));
22+
while (low < high && nums[low] == nums[low + 1]) low++;
23+
while (low < high && nums[high] == nums[high - 1]) high--;
24+
low = low + 1;
25+
high = high - 1;
26+
}
27+
}
28+
}
29+
30+
return result;
31+
}
32+
}

climbing-stairs/hoyeongkwak.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*
2+
Time Complexity : O(n)
3+
Space Complexity : O(1)
4+
*/
5+
class Solution {
6+
public int climbStairs(int n) {
7+
if (n < 3) return n;
8+
int prev = 1;
9+
int curr = 2;
10+
11+
for(int i = 0; i < n - 2; i++) {
12+
int temp = prev;
13+
prev = curr;
14+
curr = temp + curr;
15+
}
16+
return curr;
17+
}
18+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
Time Complexity : O(n)
3+
Space Complexity : O(n)
4+
*/
5+
class Solution {
6+
public int[] productExceptSelf(int[] nums) {
7+
int[] results = new int[nums.length];
8+
Arrays.fill(results, 1);
9+
int before = 1;
10+
int after = 1;
11+
12+
for (int i = 0; i < nums.length - 1; i++) {
13+
before = before * nums[i];
14+
results[i + 1] = results[i + 1] * before;
15+
}
16+
17+
for (int i = nums.length - 1; i > 0; i--) {
18+
after = after * nums[i];
19+
results[i - 1] = results[i - 1] * after;
20+
}
21+
return results;
22+
}
23+
}

valid-anagram/hoyeongkwak.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
- 애너그램 또는 어구정철 : 문장의 순서를 바꾸어 다른 단어로 만드는 것
3+
- 같은 단어가 맞는지 검증
4+
- s와 t의 각 알파벳별로 한쪽은 증가, 한쪽은 감소하면서 갯수 세기
5+
- 갯수가 0이 아닌 경우엔 서로 다른 단어이기에 false
6+
*/
7+
/*
8+
Time Complexity : O(n)
9+
Space Complexity : O(1)
10+
*/
11+
class Solution {
12+
public boolean isAnagram(String s, String t) {
13+
if (s.length() != t.length())
14+
return false;
15+
16+
int[] count = new int[26];
17+
for (int i = 0; i < s.length(); i++) {
18+
count[s.charAt(i) - 'a']++;
19+
count[t.charAt(i) - 'a']--;
20+
}
21+
22+
for (int c : count) {
23+
if (c != 0)
24+
return false;
25+
}
26+
return true;
27+
}
28+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode() {}
8+
* TreeNode(int val) { this.val = val; }
9+
* TreeNode(int val, TreeNode left, TreeNode right) {
10+
* this.val = val;
11+
* this.left = left;
12+
* this.right = right;
13+
* }
14+
* }
15+
*/
16+
/*
17+
Time Complexity : O(n)
18+
Space Complexity : O(n)
19+
*/
20+
class Solution {
21+
TreeNode prev;
22+
public boolean isValidBST(TreeNode root) {
23+
if (root == null) return true;
24+
if (!isValidBST(root.left)) return false;
25+
if (prev != null && prev.val >= root.val) return false;
26+
prev = root;
27+
return isValidBST(root.right);
28+
}
29+
}

0 commit comments

Comments
 (0)