この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
82. 会議の開く時間を探す
解法例:
function findMeetingSlots(schedule) { // インプットをソートして処理をしやすくする。 schedule.forEach(memberSchedule => { memberSchedule.sort((a, b) => a[0] - b[0]); }); const freeSlots = []; // 最小のスタート時間を見つける let currentMin = schedule[0][0][0]; // 終了時間 let currentMax = schedule[0][0][1]; // メンバーの数 const numMembers = schedule.length; for (let currentTime = 0; currentTime <= 24; currentTime++) { let isBusy = false; for (let i = 0; i < numMembers; i++) { const memberSchedule = schedule[i]; // Member 1,8 // StartTime = 9 // EndTime = 10 // if (StartTime(9) < myTime(9) && EndTime(10) > myTime(9)){} for (let j = 0; j < memberSchedule.length; j++) { const [memberStart, memberEnd] = memberSchedule[j]; if (currentTime >= memberStart && currentTime < memberEnd) { isBusy = true; break; } } if (isBusy) { break; } } if (!isBusy) { currentMax = currentTime; // Free slot! if (currentTime > currentMin) { freeSlots.push([currentMin, currentMax]); } currentMin = currentTime; } } // もし、最後の状態が空きなしで、なおかつ 24 で終わっていない場合は、24 時間中の時間を保存します。 if (currentMax !== 24) { freeSlots.push([currentMin, 24]); } return freeSlots;}
注意点:
この関数では、最初にインプットをソートすることで処理を簡素化しています。
また、for ループをネストしないように注意することで、収益性を確保します。特定の時間に、各メンバーが非常に多数の予定を持っている場合は、計算量が増加する可能性があるため、それに注意することが重要です。