Skip to content

Commit

Permalink
Merge pull request #573 from jaejeong1/main
Browse files Browse the repository at this point in the history
[jaejeong1] WEEK 12 Solutions
  • Loading branch information
jaejeong1 authored Nov 3, 2024
2 parents 849ece4 + 97a452c commit 735a429
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 0 deletions.
35 changes: 35 additions & 0 deletions merge-intervals/jaejeong1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

class Solution {

public int[][] merge(int[][] intervals) {
// TC: O(N log N)
// SC: O(N)

// length가 2보다 적으면 그대로 반환
if (intervals.length < 2) {
return intervals;
}

List<int[]> output = new ArrayList<>();

// intervals 배열을 시작 시간 기준으로 정렬
Arrays.sort(intervals, Comparator.comparingInt(a -> a[0]));

for (int[] interval : intervals) {
// output이 비어있거나, 현재 interval이 마지막에 추가된 구간과 겹치지 않으면 추가
if (output.isEmpty() || output.get(output.size() - 1)[1] < interval[0]) {
output.add(interval);
} else {
// 겹치는 경우, 마지막 구간의 끝 시간을 업데이트
output.get(output.size() - 1)[1] = Math.max(output.get(output.size() - 1)[1], interval[1]);
}
}

// List<int[]>를 int[][] 배열로 변환하여 반환
return output.toArray(new int[output.size()][]);
}
}
43 changes: 43 additions & 0 deletions remove-nth-node-from-end-of-list/jaejeong1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import java.util.LinkedList;

// Definition for singly-linked list.
class ListNode {
int val;
ListNode next;
ListNode() {}
ListNode(int val) { this.val = val; }
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}

class Solution {

public static void main(String[] args) {
Solution s = new Solution();
var node = new ListNode(1, new ListNode(2));
s.removeNthFromEnd(node, 1);
}

public ListNode removeNthFromEnd(ListNode head, int n) {
// 문제: 링크드리스트의 head가 주어지면 끝에서 N번째 노드를 삭제한 결과를 반환하라
// 풀이: n번째만큼 first 이동, 그 후 second를 1칸씩 함께 이동 시킨다 first가 끝에 도달할 때 까지
// 전체 길이 L, 주어진 N이 있을때 이렇게 하면 L - N - 1 위치를 구할 수 있다.
// TC: O(N)
// SC: O(1)
var dummy = new ListNode(-1, head);
var first = head;
for (int i=0; i<n; i++) {
first = first.next;
}

var second = dummy;

while(first != null) {
first = first.next;
second = second.next;
}

second.next = second.next.next;
return dummy.next;
}

}
36 changes: 36 additions & 0 deletions same-tree/jaejeong1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@

// Definition for a binary tree node.
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}

class Solution {

public boolean isSameTree(TreeNode p, TreeNode q) {
// 풀이: 재귀로 left와 right를 비교하면서 같은지 확인한다.
// TC: O(N)
// SC: O(N)
return dfs(p, q);
}

private boolean dfs(TreeNode p, TreeNode q) {
if (p == null || q == null) {
return p == q; // 둘 다 null이면 true, 하나만 null이면 false
}

if (p.val != q.val) { // 값이 다르면 false
return false;
}

return dfs(p.left, q.left) && dfs(p.right, q.right);
}
}

0 comments on commit 735a429

Please sign in to comment.