/* * @Author: LetMeFly * @Date: 2025-07-13 21:44:10 * @LastEditors: LetMeFly.xyz * @LastEditTime: 2025-07-13 22:03:24 */ classSolution { public: intmaxFreeTime(int eventTime, int k, vector<int>& startTime, vector<int>& endTime){ int cnt = 0; for (int i = 0; i < k; i++) { cnt += endTime[i] - startTime[i]; } int ans = 0; int n = startTime.size(); for (int i = k; i <= n; i++) { int l = (i == k ? 0 : endTime[i - k - 1]) + cnt; int r = (i == n ? eventTime : startTime[i]); ans = max(ans, r - l); // printf("i = %d, l = %d, r = %d, cnt = %d, ans = %d\n", i, l, r, cnt, ans); if (i == n) { break; } cnt += endTime[i] - startTime[i]; cnt -= endTime[i - k] - startTime[i - k]; } return ans; } };
classSolution: defmaxFreeTime(self, eventTime: int, k: int, startTime: List[int], endTime: List[int]) -> int: cnt = sum(endTime[i] - startTime[i] for i inrange(k)) n = len(startTime) ans = 0 for i inrange(k, n + 1): l = (endTime[i - k - 1] if i > k else0) + cnt r = eventTime if i == n else startTime[i] ans = max(ans, r - l) if i == n: break cnt += endTime[i] - startTime[i] cnt -= endTime[i - k] - startTime[i - k] return ans
funcmaxFreeTime(eventTime int, k int, startTime []int, endTime []int) (ans int) { cnt := 0 for i := 0; i < k; i++ { cnt += endTime[i] - startTime[i] } n := len(startTime) for i := k; i <= n; i++ { var l, r int if i == k { l = cnt } else { l = endTime[i - k - 1] + cnt } if i == n { r = eventTime } else { r = startTime[i] } ans = max(ans, r - l) if i == n { break } cnt += endTime[i] - startTime[i] cnt -= endTime[i - k] - startTime[i - k] } return ans }