Created
July 9, 2025 07:20
-
-
Save SuryaPratapK/93da992cc6252085a68cabccff1e02db to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Solution { | |
public: | |
int maxFreeTime(int eventTime, int k, vector<int>& startTime, vector<int>& endTime) { | |
if(eventTime>endTime.back()){ | |
startTime.push_back(eventTime); | |
endTime.push_back(eventTime); | |
} | |
int n = startTime.size(); | |
int max_sum = 0; | |
int win_sum = 0; | |
int pos = 0; | |
int last_end = 0; | |
deque<int> dq; | |
while(pos<n){ | |
win_sum += (startTime[pos]-last_end); | |
max_sum = max(max_sum,win_sum); | |
dq.push_back(startTime[pos]-last_end); | |
if(dq.size()>k){ | |
win_sum -= dq.front(); | |
dq.pop_front(); | |
} | |
last_end = endTime[pos]; | |
pos++; | |
} | |
return max_sum; | |
} | |
}; | |
/* | |
//JAVA | |
import java.util.ArrayDeque; | |
import java.util.Deque; | |
class Solution { | |
public int maxFreeTime(int eventTime, int k, int[] startTime, int[] endTime) { | |
if (eventTime > endTime[endTime.length - 1]) { | |
int[] newStartTime = new int[startTime.length + 1]; | |
int[] newEndTime = new int[endTime.length + 1]; | |
System.arraycopy(startTime, 0, newStartTime, 0, startTime.length); | |
System.arraycopy(endTime, 0, newEndTime, 0, endTime.length); | |
newStartTime[startTime.length] = eventTime; | |
newEndTime[endTime.length] = eventTime; | |
startTime = newStartTime; | |
endTime = newEndTime; | |
} | |
int n = startTime.length; | |
int max_sum = 0; | |
int win_sum = 0; | |
int pos = 0; | |
int last_end = 0; | |
Deque<Integer> dq = new ArrayDeque<>(); | |
while (pos < n) { | |
win_sum += (startTime[pos] - last_end); | |
dq.addLast(startTime[pos] - last_end); | |
max_sum = Math.max(max_sum, win_sum); | |
if (dq.size() > k) { | |
win_sum -= dq.removeFirst(); | |
} | |
last_end = endTime[pos]; | |
pos++; | |
} | |
return max_sum; | |
} | |
} | |
#Python | |
from collections import deque | |
class Solution: | |
def maxFreeTime(self, eventTime: int, k: int, startTime: list[int], endTime: list[int]) -> int: | |
if eventTime > endTime[-1]: | |
startTime.append(eventTime) | |
endTime.append(eventTime) | |
n = len(startTime) | |
max_sum = 0 | |
win_sum = 0 | |
pos = 0 | |
last_end = 0 | |
dq = deque() | |
while pos < n: | |
win_sum += (startTime[pos] - last_end) | |
dq.append(startTime[pos] - last_end) | |
max_sum = max(max_sum, win_sum) | |
if len(dq) > k: | |
win_sum -= dq.popleft() | |
last_end = endTime[pos] | |
pos += 1 | |
return max_sum | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment