java写算法,多个时间段,去掉重复之后的时间差(小时) 100

N多个时间段07:00-08:00这种,中间有重叠的时间段,结果要计算把交集去掉之后,每个时间段对应的工时,可以保证是计算一天内的;如:07:00-10:0008:00-... N多个时间段 07:00 - 08:00 这种 ,中间有重叠的时间段, 结果要计算 把交集去掉之后,每个时间段对应的 工时 ,可以保证是计算一天内的;
如:
07:00 - 10:00
08:00 - 09:00
10:00 - 11:00
计算后工时为:
2小时
1小时
1小时
展开
 我来答
匿名用户
2016-07-13
展开全部
用文字表达一下算法思路吧
考虑到时间可能不是整点,让算法更兼容,这里统一将时间转换成基于00:00的精度到分的时间戳;
即07:00 = 7 * 60 = 420,10:00 = 10 * 60 = 600;

导入第一组工时数据
转换成时间戳,两个为一组
将连续的时间段存入数组
导入第N组工时数据并转换成时间戳
将第N组开工时间戳和收工时间戳和数组中的连续时间段进行比较
根据比较结果维护连续时间段的数组
根据数组计算出结果或者在循环处理数据时直接累加结果
追问
直接操作时间戳吗? 思路是先把时间戳数组计算 成不重复的数组 然后累加结果吗?
追答
用数据来演算一下可能更易理解
420,600进入数组
480,540与420,600计算并集420,600重写数组
600,660与420,600计算交集结果420,660重写入数组
最终数组420,660
计算工时(660-420)/60=4

再举例非连续时间段
7:00-8:00 9:00-10:00

420,480写入数组
540,600与420,480计算并集结果420,480;540,600长度为2的二维数组
遍历这个二维数组计算工时(480-420+600-540)/60=2
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式