
算法:计算预定时间段内已安排时间段的总时长
给定两个数组 paiban (预定时间段) 和 paiban2 (已安排时间段),目标是计算 paiban2 中,落在 paiban 各个时间段内的已安排时间段的总时长。
改进的解决方案:
网易人工智能
网易数帆多媒体智能生产力平台
206 查看详情
之前的方案只计算了满足条件的已安排时间段的数量,而非时长。 我们需要修改算法来计算时长。 假设时间以分钟为单位。
function calculateScheduledTime(paiban, paiban2) { const results = paiban.map(item => { let totalTime = 0; const filtered = paiban2.filter(({ starttime, endtime }) => { // 转换为分钟数方便计算 const itemStartMinutes = timeToMinutes(item.starttime); const itemEndMinutes = timeToMinutes(item.endtime); const startMinutes = timeToMinutes(starttime); const endMinutes = timeToMinutes(endtime); // 检查已安排时间段是否完全在预定时间段内 return itemStartMinutes = endMinutes; }); filtered.forEach(({ starttime, endtime }) => { totalTime += timeToMinutes(endtime) - timeToMinutes(starttime); }); return totalTime; }); return results;}function timeToMinutes(time) { const [hours, minutes] = time.split(':').map(Number); return hours * 60 + minutes;}const paiban = [ { id: 1, starttime: '08:00', mouth: 10, endtime: '09:00', checked: false }, { id: 2, starttime: '09:00', mouth: 10, endtime: '10:00', checked: false }, { id: 3, starttime: '10:00', mouth: 10, endtime: '11:00', checked: false },];const paiban2 = [ { id: 1, starttime: '08:00', endtime: '08:10' }, { id: 2, starttime: '08:10', endtime: '08:20' }, { id: 3, starttime: '08:30', endtime: '08:50' }, { id: 4, starttime: '09:00', endtime: '09:10' }, { id: 5, starttime: '09:10', endtime: '09:20' }, { id: 6, starttime: '10:00', endtime: '10:10' }, { id: 7, starttime: '10:10', endtime: '10:20' }, { id: 8, starttime: '10:20', endtime: '10:40' },];console.log(calculateScheduledTime(paiban, paiban2)); // [30, 20, 40] (in minutes)
这个改进后的代码首先定义了一个 timeToMinutes 函数将时间字符串转换为分钟数,然后在 calculateScheduledTime 函数中计算每个预定时间段内已安排时间段的总时长(以分钟为单位)。 输出结果更直观地反映了已安排时间的实际时长。 注意,这个算法假设已安排的时间段不会超过预定时间段。 如果需要处理这种情况,需要添加额外的逻辑。
以上就是如何计算预定时间段内已安排时间段的长度?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1146935.html
微信扫一扫
支付宝扫一扫