From e44e93b974dbcc363588a2b78dfadeb62808c0a9 Mon Sep 17 00:00:00 2001 From: hyerijung Date: Sun, 24 May 2026 14:57:38 +0900 Subject: [PATCH 1/3] same-tree solutions --- same-tree/hyeri0903.java | 44 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 same-tree/hyeri0903.java diff --git a/same-tree/hyeri0903.java b/same-tree/hyeri0903.java new file mode 100644 index 0000000000..56a62885bd --- /dev/null +++ b/same-tree/hyeri0903.java @@ -0,0 +1,44 @@ +/** + * Definition for a binary tree node. + * public 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) { + /** + 1.problem: 2개의 bst 가 동일한지 체크 + 2.constraints - 구조와 노드가 동일해야된다 + 3.solution - DFS + 1) 두 트리의 노드가 모두 null -> true + 2) 둘중 하나만 null -> false + 3) 값이 다르면 false + 4)재귀로 트리의 구조가 동일한지 체크 + */ + + if(p == null && q == null) { + return true; + } + if(p == null || q == null) { + return false; + } + if(p.val != q.val) { + return false; + } + + if(isSameTree(p.left, q.left) && isSameTree(p.right, q.right)) { + return true; + } + return false; + } + +} From 2b0651197a7eaf44f5208d203ea61342b7d9f32e Mon Sep 17 00:00:00 2001 From: hyerijung Date: Sun, 24 May 2026 15:20:26 +0900 Subject: [PATCH 2/3] remove-nth-node-from-end-of-list --- .../hyeri0903.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 remove-nth-node-from-end-of-list/hyeri0903.java diff --git a/remove-nth-node-from-end-of-list/hyeri0903.java b/remove-nth-node-from-end-of-list/hyeri0903.java new file mode 100644 index 0000000000..04644193ba --- /dev/null +++ b/remove-nth-node-from-end-of-list/hyeri0903.java @@ -0,0 +1,46 @@ +/** + * Definition for singly-linked list. + * public 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 ListNode removeNthFromEnd(ListNode head, int n) { + /** + 1.linked list 에서 뒤에서 n번째 node remove + 2.constraints: + node 개수(sz) min=1, max=30 + n값 min = 1, max= sz + 3.solutions: two pointers + - fast, slow pointer 2개의 간격 = n + - fast 가 끝지점에 도달하면 그때 slow.next 를 제거 + time: O(n), space: O(1) + */ + + ListNode dummy = new ListNode(0); + dummy.next = head; + + ListNode fast = dummy; + ListNode slow = dummy; + + //fast pointer n+1칸 이동, fast - slow = n + for(int i = 0; i <= n; i++) { + fast = fast.next; + } + + while(fast != null) { + fast = fast.next; + slow = slow.next; + } + + //slow pointer 의 다음 노드(slow.next) 제거 + slow.next = slow.next.next; + + return dummy.next; + + } +} From 33aeb1d27564ee378e896a65e0ad95bbad8eada8 Mon Sep 17 00:00:00 2001 From: hyerijung Date: Sun, 24 May 2026 15:49:55 +0900 Subject: [PATCH 3/3] non overlapping intervals solutions --- non-overlapping-intervals/hyeri0903.java | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 non-overlapping-intervals/hyeri0903.java diff --git a/non-overlapping-intervals/hyeri0903.java b/non-overlapping-intervals/hyeri0903.java new file mode 100644 index 0000000000..ac8c8077b9 --- /dev/null +++ b/non-overlapping-intervals/hyeri0903.java @@ -0,0 +1,30 @@ +class Solution { + public int eraseOverlapIntervals(int[][] intervals) { + /** + 1.prob: 겹치지 않는 최소한의 non-oerlapping interval 제거 + 2.constraints + - inverval.lenght min=1, max = 100,000 + 3.solutions - Greedy + - end 기준 오름차순 정렬 + - 이전 interval end 저장 + - 다음 interval check, 안겹치면 -> 선택, 겹치면 count++ + Time: O(n logn), Space: O(1) + */ + int count = 0; + + //end 기준 ascending 정렬 + Arrays.sort(intervals, (a, b) -> a[1] - b[1]); + int end = intervals[0][1]; + + //겹치면 count++, 안겹치면 end update + for(int i = 1; i < intervals.length; i++) { + if(intervals[i][0] < end) { + count++; + } else { + end = intervals[i][1]; + } + } + + return count; + } +}