Skip to content

Commit 9000f18

Browse files
authored
Merge branch 'DaleStudy:main' into main
2 parents 288f512 + 95bed90 commit 9000f18

File tree

11 files changed

+386
-0
lines changed

11 files changed

+386
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"""
2+
[๋ฌธ์ œํ’€์ด]
3+
# Inputs
4+
5+
# Outputs
6+
7+
# Constraints
8+
9+
# Ideas
10+
11+
[ํšŒ๊ณ ]
12+
13+
"""
14+
15+
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/*
2+
ํ’€์ด :
3+
maxHeap๊ณผ minHeap ์‚ฌ์šฉ
4+
5+
heap์— ๋‹ด๊ธด ์ด ์ˆ˜ : N
6+
7+
addNum()
8+
์ž‘์€ ์ˆ˜ ์ง‘ํ•ฉ์€ maxHeap, ํฐ ์ˆ˜ ์ง‘ํ•ฉ์€ minHeap์— ๋‹ด๋Š”๋‹ค
9+
minHeap๊ณผ maxHeap์˜ ๊ฐœ์ˆ˜์ฐจ์ด๋ฅผ 1๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ addNum
10+
11+
TC : O (log N)
12+
ํž™์— ๋„ฃ๊ณ  ๋บ„ ๋•Œ O (logN) ์˜ ์‹œ๊ฐ„ ์†Œ์š”
13+
14+
SC : O (N)
15+
์ด ํž™ ํฌ๊ธฐ๋Š” N์— ๋น„๋ก€
16+
17+
findMedian()
18+
๋” ํฌ๊ฒŒ ์œ ์ง€๋˜๋Š” ๊ฒƒ์€ minHeap์ด๋ฏ€๋กœ ๋‘˜ ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์ง€ ์•Š์„๊ฒฝ์šฐ(์ด ํ™€์ˆ˜๊ฐœ) minHeap.top() ๋ฆฌํ„ด
19+
๊ฐ™์„ ๊ฒฝ์šฐ ์ด๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜๊ฐœ์ด๋ฏ€๋กœ ๋‘ ํž™.top()์˜ ํ‰๊ท ์„ ๋ฆฌํ„ด
20+
21+
TC : O (1)
22+
๊ฐ ํž™์—์„œ root๊ฐ’ ํ™•์ธ์€ O(1)์˜ ์‹œ๊ฐ„ ์†Œ์š”
23+
SC : O (1)
24+
*/
25+
26+
#include <queue>
27+
#include <vector>
28+
using namespace std;
29+
30+
class MedianFinder {
31+
public:
32+
priority_queue<int> maxHeap;
33+
priority_queue<int, vector<int>, greater<int>> minHeap;
34+
35+
MedianFinder() {
36+
37+
}
38+
39+
void addNum(int num) {
40+
if (minHeap.empty() || num >= minHeap.top())
41+
minHeap.push(num);
42+
else
43+
maxHeap.push(num);
44+
45+
if (minHeap.size() > maxHeap.size() + 1) {
46+
maxHeap.push(minHeap.top());
47+
minHeap.pop();
48+
}
49+
else if (maxHeap.size() > minHeap.size()) {
50+
minHeap.push(maxHeap.top());
51+
maxHeap.pop();
52+
}
53+
}
54+
55+
double findMedian() {
56+
if (maxHeap.size() == minHeap.size())
57+
return static_cast<double>(maxHeap.top() + minHeap.top()) / 2;
58+
else
59+
return minHeap.top();
60+
}
61+
};
62+
63+
/**
64+
* Your MedianFinder object will be instantiated and called as such:
65+
* MedianFinder* obj = new MedianFinder();
66+
* obj->addNum(num);
67+
* double param_2 = obj->findMedian();
68+
*/
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"""
2+
[๋ฌธ์ œํ’€์ด]
3+
# Inputs
4+
5+
# Outputs
6+
7+
# Constraints
8+
9+
# Ideas
10+
11+
[ํšŒ๊ณ ]
12+
13+
"""
14+
15+
16+
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
ํ’€์ด :
3+
๊ธฐ์กด ๋ฐฐ์—ด ์ค‘ start๊ฐ€ newInterval๋ณด๋‹ค ๋น ๋ฅด๋ฉด์„œ newInterval๊ณผ ๊ฒน์น˜์ง€ ์•Š๋Š” ์š”์†Œ๋“ค result์— push
4+
๊ฒน์น˜๋Š” ์š”์†Œ๋“ค์€ newInterval์— ํ†ตํ•ฉ ํ›„ result์— push
5+
๊ทธ ํ›„ ๋‚˜๋จธ์ง€ ๊ฒน์น˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„ result์— push
6+
7+
intervals ๊ฐœ์ˆ˜ : N
8+
9+
TC : O (N)
10+
11+
SC : O (1)
12+
๋ฆฌํ„ดํ•˜๋Š” ๋ฐฐ์—ด ์™ธ์— ์ถ”๊ฐ€ ๊ณต๊ฐ„ ์‚ฌ์šฉ X
13+
*/
14+
15+
#include <vector>
16+
using namespace std;
17+
18+
class Solution {
19+
public:
20+
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
21+
vector<vector<int>> result;
22+
int i = 0;
23+
int n = intervals.size();
24+
25+
while (i < n && intervals[i][1] < newInterval[0]) {
26+
result.push_back(intervals[i]);
27+
i++;
28+
}
29+
30+
while (i < n && intervals[i][0] <= newInterval[1]) {
31+
newInterval[0] = min(intervals[i][0], newInterval[0]);
32+
newInterval[1] = max(intervals[i][1], newInterval[1]);
33+
i++;
34+
}
35+
result.push_back(newInterval);
36+
37+
while (i < n) {
38+
result.push_back(intervals[i]);
39+
i++;
40+
}
41+
return result;
42+
}
43+
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"""
2+
[๋ฌธ์ œํ’€์ด]
3+
# Inputs
4+
5+
# Outputs
6+
7+
# Constraints
8+
9+
# Ideas
10+
11+
[ํšŒ๊ณ ]
12+
13+
"""
14+
15+
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
ํ’€์ด :
3+
์ค‘์œ„์ˆœํšŒ๋กœ ํŠธ๋ฆฌ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ˆœ์„œ๋Œ€๋กœ vector์— ๋‹ด๋Š”๋‹ค
4+
BST๋Š” ์ค‘์œ„์ˆœํšŒ ์‹œ ํฌ๊ธฐ ์ˆœ์„œ๋กœ ํƒ์ƒ‰๋˜๋ฏ€๋กœ vector์—์„œ k๋ฒˆ์งธ์ธ ์š”์†Œ๋ฅผ return
5+
6+
ํŠธ๋ฆฌ ๊ฐœ์ˆ˜ : N
7+
8+
TC : O (N)
9+
๋ชจ๋“  ํŠธ๋ฆฌ dfs๋กœ ์ˆœํšŒ
10+
11+
SC : O (N)
12+
๋ฐฐ์—ด ํฌ๊ธฐ๋Š” ํŠธ๋ฆฌ ๊ฐœ์ˆ˜์— ๋น„๋ก€
13+
*/
14+
15+
#include <vector>
16+
using namespace std;
17+
/**
18+
* Definition for a binary tree node.
19+
* struct TreeNode {
20+
* int val;
21+
* TreeNode *left;
22+
* TreeNode *right;
23+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
24+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
25+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
26+
* };
27+
*/
28+
class Solution {
29+
public:
30+
int kthSmallest(TreeNode* root, int k) {
31+
vector<int> v;
32+
dfs(root, v);
33+
return v[k - 1];
34+
}
35+
void dfs(TreeNode* root, vector<int>& v) {
36+
if (!root)
37+
return ;
38+
if (root->left)
39+
dfs(root->left, v);
40+
v.push_back(root->val);
41+
if (root->right)
42+
dfs(root->right, v);
43+
}
44+
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"""
2+
[๋ฌธ์ œํ’€์ด]
3+
# Inputs
4+
5+
# Outputs
6+
7+
# Constraints
8+
9+
# Ideas
10+
11+
[ํšŒ๊ณ ]
12+
13+
"""
14+
15+
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
ํ’€์ด :
3+
ํ˜„์žฌ root๋ฅผ ๊ธฐ์ค€์œผ๋กœ p, q๊ฐ€ ์–ด๋”จ๋Š”์ง€ ํŒ๋ณ„
4+
p, q๊ฐ’์ด ๋ชจ๋‘ root ๋ณด๋‹ค ์ž‘์œผ๋ฉด ์™ผ์ชฝ, ๋ชจ๋‘ root ๋ณด๋‹ค ํฌ๋ฉด ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ๋กœ ์ด๋™
5+
๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ (root ๊ฐ’์ด p ๋˜๋Š” q์™€ ๊ฐ™์„ ๊ฒฝ์šฐ, p์™€ q์‚ฌ์ด์— ์žˆ๋Š” ๊ฒฝ์šฐ)์—๋Š”
6+
ํ˜„์žฌ root๊ฐ€ LCA์ด๋ฏ€๋กœ root ๋ฆฌํ„ด
7+
8+
ํŠธ๋ฆฌ ๋†’์ด : H
9+
10+
TC : O (H)
11+
๋ฐ˜๋ณต๋ฌธ์ด ํŠธ๋ฆฌ ๋†’์ด์— ๋น„๋ก€
12+
13+
SC : O (1)
14+
*/
15+
16+
17+
#include <algorithm>
18+
using namespace std;
19+
/**
20+
* Definition for a binary tree node.
21+
* struct TreeNode {
22+
* int val;
23+
* TreeNode *left;
24+
* TreeNode *right;
25+
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
26+
* };
27+
*/
28+
29+
class Solution {
30+
public:
31+
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
32+
int small = min(p->val, q->val);
33+
int big = max(p->val, q->val);
34+
while (root) {
35+
if (root->val > big)
36+
root = root->left;
37+
else if (root->val < small)
38+
root = root->right;
39+
else
40+
break;
41+
}
42+
return root;
43+
}
44+
};
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import java.util.Collections;
2+
import java.util.Comparator;
3+
import java.util.List;
4+
5+
class Interval {
6+
int start, end;
7+
8+
Interval(int start, int end) {
9+
this.start = start;
10+
this.end = end;
11+
}
12+
}
13+
14+
class Solution {
15+
16+
public boolean canAttendMeetings(List<Interval> intervals) {
17+
Collections.sort(intervals, new Comparator<Interval>() {
18+
@Override
19+
public int compare(Interval i1, Interval i2) {
20+
if (i1.start == i2.start) {
21+
return i1.end - i2.end;
22+
}
23+
24+
return i1.start - i2.start;
25+
}
26+
});
27+
28+
int prevEnd = -987654321;
29+
for (Interval anInt : intervals) {
30+
if (anInt.start < prevEnd) {
31+
return false;
32+
}
33+
34+
prevEnd = anInt.end;
35+
}
36+
37+
return true;
38+
}
39+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
"""
2+
[๋ฌธ์ œํ’€์ด]
3+
# Inputs
4+
[(0, 8), (8, 10)] -> ํŠœํ”Œ ๋ฐฐ์—ด
5+
6+
# Outputs
7+
๋ชจ๋“  ๋ฏธํŒ… ์‹œ๊ฐ„์— ๋Œ€ํ•ด ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์—ฌ๋ถ€
8+
9+
# Constraints
10+
0 <= intervals ๋ฐฐ์—ด <= 10^4
11+
๊ตฌ๊ฐ„ ๊ธธ์ด : 2
12+
13+
14+
# Ideas
15+
์ •๋ ฌ ํ›„ ๊ฐ ์š”์†Œ ์ˆœํšŒํžˆ๋ฉด์„œ, ์ฒซ๋ฒˆ์งธ ์˜ค๋ฅธ์ชฝ ๊ฐ’๋ณด๋‹ค ๋‘๋ฒˆ์งธ ์™ผ์ชฝ ๊ฐ’์ด ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ํ†ต๊ณผ
16+
์•„๋‹ˆ๋ฉด false?
17+
18+
[ํšŒ๊ณ ]
19+
20+
"""
21+
22+
23+
class Solution:
24+
"""
25+
@param intervals: an array of meeting time intervals
26+
@return: if a person could attend all meetings
27+
"""
28+
29+
def can_attend_meetings(self, intervals: List[Interval]) -> bool:
30+
# Write your code here
31+
32+
intervals.sort(key=lambda x: (x[0]))
33+
for i in range(len(intervals) - 1):
34+
if intervals[i][1] > intervals[i + 1][0]:
35+
return False
36+
37+
return True
38+
39+
40+
# ํ•ด์„ค
41+
# ์ œ์ถœ ์ฝ”๋“œ์™€ ๋™์ผ!
42+
43+

0 commit comments

Comments
ย (0)