File tree Expand file tree Collapse file tree 4 files changed +112
-0
lines changed
lowest-common-ancestor-of-a-binary-search-tree
non-overlapping-intervals Expand file tree Collapse file tree 4 files changed +112
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public int rob(int[] nums) {
3
+ // ์ธ์ ํ ๊ฒฝ์ฐ๋ ์ ์ธํ ์ต๋ ํฉ
4
+ // ํ์ด: dp๋ก ํ์ดํ๋ค. dp[i] = max(dp[i-1], dp[i-2] + nums[i])
5
+ // TC: O(N), SC: O(N)
6
+ if (nums.length == 1) {
7
+ return nums[0];
8
+ }
9
+
10
+ var dp = new int[nums.length];
11
+ dp[0] = nums[0];
12
+ dp[1] = Math.max(nums[0], nums[1]);
13
+
14
+ for (int i=2; i<nums.length; i++) {
15
+ dp[i] = Math.max(dp[i-1], dp[i-2] + nums[i]);
16
+ }
17
+
18
+ return dp[nums.length-1];
19
+ }
20
+ }
Original file line number Diff line number Diff line change
1
+
2
+ // Definition for a binary tree node.
3
+ class TreeNode {
4
+ int val;
5
+ TreeNode left;
6
+ TreeNode right;
7
+
8
+ TreeNode(int x) {
9
+ val = x;
10
+ }
11
+ }
12
+
13
+
14
+ class Solution {
15
+ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
16
+ // ํ์ด: p,q ๋๋ค root ๋ณด๋ค ๊ฐ์ด ์ ์ผ๋ฉด ์ผ์ชฝ ์๋ธํธ๋ฆฌ๋ฅผ, ๋๋ค ํฌ๋ฉด ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๋ฅผ ํ์ํด์ผํ๋ค.
17
+ // ๊ทธ๋ ์ง ์์ผ๋ฉด ํด๋น root๊ฐ ์ต์ ๊ณตํต ์กฐ์์ด ๋๋ค.
18
+ // TC: O(H), H: ํธ๋ฆฌ์ ๋์ด
19
+ // SC: O(1)
20
+ var node = root;
21
+ while (node != null) {
22
+ if (p.val < node.val && q.val < node.val) {
23
+ node = node.left;
24
+ } else if (p.val > node.val && q.val > node.val) {
25
+ node = node.right;
26
+ } else {
27
+ break;
28
+ }
29
+ }
30
+
31
+ return node;
32
+ }
33
+ }
Original file line number Diff line number Diff line change
1
+ import java.util.List;
2
+
3
+ // Definition of Interval:
4
+ class Interval {
5
+ int start, end;
6
+ Interval(int start, int end) {
7
+ this.start = start;
8
+ this.end = end;
9
+ }
10
+ }
11
+
12
+
13
+ public class Solution {
14
+ /**
15
+ * @param intervals: an array of meeting time intervals
16
+ * @return: if a person could attend all meetings
17
+ */
18
+ public boolean canAttendMeetings(List<Interval> intervals) {
19
+ // ํ์ด: ์ ๋ ฌ ํ ์์์ ๋น๊ตํด๊ฐ๋ฉฐ ์กฐ๊ฑด์ ๋ง์ง ์์ผ๋ฉด false ๋ฅผ ๋ฐํํ๋ค.
20
+ // TC: O(N)
21
+ // SC: O(1)
22
+
23
+ var sortedIntervals = intervals.stream().sorted().toList();
24
+
25
+ for (int i=0; i<sortedIntervals.size()-1; i++) {
26
+ if (sortedIntervals.get(i).end > sortedIntervals.get(i+1).start) {
27
+ return false;
28
+ }
29
+ }
30
+ return true;
31
+ }
32
+ }
Original file line number Diff line number Diff line change
1
+ import java.util.Arrays;
2
+ import java.util.Comparator;
3
+
4
+ class Solution {
5
+ public int eraseOverlapIntervals(int[][] intervals) {
6
+ // ํ์ด: ์ ๋ ฌ ํ ๊ฐ ๊ตฌ๊ฐ์ ๋ ๊ฐ์ ์ ์ฅํด๊ฐ๋ฉฐ ์ ์์ ๋น๊ต, ์ ๊ฑฐ ๋์์ผ๋ ์นด์ดํธ๋ฅผ ์ฆ๊ฐ์์ผ ๋ฐํํ๋ค.
7
+ // TC: O(N)
8
+ // SC: O(1)
9
+
10
+ // intervals๋ฅผ ๊ฐ ๊ตฌ๊ฐ์ ๋ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
11
+ Arrays.sort(intervals, Comparator.comparingInt(a -> a[1]));
12
+
13
+ int answer = 0;
14
+ int end = intervals[0][1]; // ์ฒซ ๋ฒ์งธ ๊ตฌ๊ฐ์ ๋ ๊ฐ
15
+
16
+ // ๋ ๋ฒ์งธ ๊ตฌ๊ฐ๋ถํฐ ์ํํ๋ฉฐ ๊ฒน์น๋์ง ํ์ธ
17
+ for (int i = 1; i < intervals.length; i++) {
18
+ if (intervals[i][0] < end) { // ํ์ฌ ๊ตฌ๊ฐ์ด ์ด์ ๊ตฌ๊ฐ๊ณผ ๊ฒน์น๋ฉด
19
+ answer++; // ์ ๊ฑฐ ํ์๋ฅผ ์ฆ๊ฐ
20
+ } else {
21
+ end = intervals[i][1]; // ๊ฒน์น์ง ์์ผ๋ฉด ํ์ฌ ๊ตฌ๊ฐ์ ๋ ๊ฐ์ ๊ฐฑ์
22
+ }
23
+ }
24
+
25
+ return answer;
26
+ }
27
+ }
You canโt perform that action at this time.
0 commit comments