Re: [閒聊] 每日leetcode

看板Marginalman作者 (神楽めあ的錢包)時間5月前 (2025/06/11 21:15), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1445/1548 (看更多)
3439. Reschedule Meetings for Maximum Free Time I 思路: 把事件間的空閒時間照順序丟到array裡面 就算兩個事件間沒有空閒時間也要加到array裡 接著對array進行sliding windows 因為移動一個事件可以讓兩個空閒時間連在一起 以此類推移動k個事件可以讓k+1個空閒時間連在一起 就這樣做完sliding windows就可以得到答案了 C++ code : class Solution { public: int maxFreeTime(int eventTime, int k, vector<int> &startTime, vector<int> &endTime) { int n = startTime.size(); int start = 0, end = startTime[0], sum = 0, ans = 0; vector<int> arr; for (int i = 0; i < n; i++) { end = startTime[i]; int diff = end - start; arr.push_back(diff); start = endTime[i]; } int diff = eventTime - start; arr.push_back(diff); int m = arr.size(); for (int i = 0; i < min(m, k + 1); i++) { sum += arr[i]; } ans = sum; for (int i = k + 1; i < m; i++) { sum = sum - arr[i - k - 1] + arr[i]; ans = max(ans, sum); } return ans; } }; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.121.235.241 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1749647724.A.45F.html
文章代碼(AID): #1eIO5iHV (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1eIO5iHV (Marginalman)