Skip to content

Commit d9c99ae

Browse files
authored
Merge pull request #1620 from PDKhan/main
[PDKhan] WEEK 13 solutions
2 parents b493d9c + 865aa45 commit d9c99ae

File tree

5 files changed

+117
-0
lines changed

5 files changed

+117
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
class MedianFinder {
2+
priority_queue<int> maxHeap;
3+
priority_queue<int, vector<int>, greater<int>> minHeap;
4+
public:
5+
MedianFinder() {
6+
}
7+
8+
void addNum(int num) {
9+
if(maxHeap.empty() || num <= maxHeap.top())
10+
maxHeap.push(num);
11+
else
12+
minHeap.push(num);
13+
14+
if(maxHeap.size() > minHeap.size() + 1){
15+
minHeap.push(maxHeap.top());
16+
maxHeap.pop();
17+
}else if(maxHeap.size() < minHeap.size()){
18+
maxHeap.push(minHeap.top());
19+
minHeap.pop();
20+
}
21+
}
22+
23+
double findMedian() {
24+
if(maxHeap.size() > minHeap.size())
25+
return maxHeap.top();
26+
else if(maxHeap.size() < minHeap.size())
27+
return minHeap.top();
28+
else
29+
return (maxHeap.top() + minHeap.top()) / 2.0;
30+
}
31+
};

insert-interval/PDKhan.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Solution {
2+
public:
3+
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
4+
vector<vector<int>> result;
5+
int i = 0;
6+
int n = intervals.size();
7+
8+
while(i < n && intervals[i][1] < newInterval[0]){
9+
result.push_back(intervals[i]);
10+
i++;
11+
}
12+
13+
while(i < n && intervals[i][0] <= newInterval[1]){
14+
newInterval[0] = min(newInterval[0], intervals[i][0]);
15+
newInterval[1] = max(newInterval[1], intervals[i][1]);
16+
i++;
17+
}
18+
19+
result.push_back(newInterval);
20+
21+
while(i < n){
22+
result.push_back(intervals[i]);
23+
i++;
24+
}
25+
26+
return result;
27+
}
28+
};
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution {
2+
public:
3+
void search(TreeNode* root, int k, int& cnt, int& result){
4+
if(root == NULL)
5+
return;
6+
if(cnt > k)
7+
return;
8+
9+
search(root->left, k, cnt, result);
10+
11+
cnt++;
12+
13+
if(cnt == k)
14+
result = root->val;
15+
16+
search(root->right, k, cnt, result);
17+
}
18+
19+
int kthSmallest(TreeNode* root, int k) {
20+
int cnt = 0;
21+
int result = 0;
22+
23+
search(root, k, cnt, result);
24+
25+
return result;
26+
}
27+
};
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Solution {
2+
public:
3+
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
4+
if(root->val < p->val && root->val < q->val)
5+
return lowestCommonAncestor(root->right, p, q);
6+
else if(root->val > p->val && root->val > q->val)
7+
return lowestCommonAncestor(root->left, p, q);
8+
else
9+
return root;
10+
}
11+
};

meeting-rooms/PDKhan.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public:
3+
/**
4+
* @param intervals: an array of meeting time intervals
5+
* @return: if a person could attend all meetings
6+
*/
7+
bool canAttendMeetings(vector<Interval> &intervals) {
8+
// Write your code here
9+
sort(intervals.begin(), intervals.end(), [](const Interval& a, const Interval& b){
10+
return a.start < b.start;
11+
});
12+
13+
for(int i = 1; i < intervals.size(); i++){
14+
if(intervals[i].start < intervals[i - 1].end)
15+
return false;
16+
}
17+
18+
return true;
19+
}
20+
};

0 commit comments

Comments
 (0)