找回密码
 立即注册

QQ登录

只需一步,快速开始

shao910604

初级会员

19

主题

45

帖子

264

积分

初级会员

积分
264
shao910604
初级会员   /  发表于:2024-10-29 18:18  /   查看:61  /  回复:7
10金币
大佬们,如下图所示,一个表格里添加了人员、时间字段,提交时怎么判断同一人员下的时间段是否重叠,后三条是同一人员



大佬们有什么思路,帮帮忙!!!!

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

7 个回复

倒序浏览
赛龙周
银牌会员   /  发表于:前天 21:45
沙发
把同一人的开始,结束时间依次放到一个数组中,对这个数组升序排序后,两数组想减,结果为0则不重叠

评分

参与人数 1金币 +5 收起 理由
Nathan.guo + 5 赞一个!

查看全部评分

回复 使用道具 举报
shao910604
初级会员   /  发表于:昨天 09:50
板凳
赛龙周 发表于 2024-10-29 21:45
把同一人的开始,结束时间依次放到一个数组中,对这个数组升序排序后,两数组想减,结果为0则不重叠

大佬,有点不是太理解,把同一人的结束时间放到一个数组,然后两个数组相减,是和原数组相减吗?那原数组结束时间和排序后的数组不是一样的吗,这样结果是不是一直是0
回复 使用道具 举报
Nathan.guo活字格认证 Wyn认证
超级版主   /  发表于:昨天 09:54
地板
感谢楼上大佬的支持,我这边提供另外一个思路:
1.使用表格到json命令,将表格数据转换为json
2.使用json反序列化命令,将第一步得到的json数据转换为数组

3.使用循环命令,来循环数组
4.循环命令中,使用数组查询命令,查询有没有某条数据的开始时间小于当前数据的开始时间,并且结束时间大于当前数据开始时间的

5.判断查询结果有没有数据,有的话就说明当前正在循环的这条数据又重复~~



当然,这个算法时间复杂度为O(n2),如果大佬自己对算法也有研究的话,也可以思考下如何实现O(n)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
赛龙周
银牌会员   /  发表于:昨天 11:21
5#
本帖最后由 赛龙周 于 2024-10-30 16:50 编辑
shao910604 发表于 2024-10-30 09:50
大佬,有点不是太理解,把同一人的结束时间放到一个数组,然后两个数组相减,是和原数组相减吗?那原数组 ...

其实就是把下次开始的时间与上次结束的时间比较,如果直接这样计算会麻烦,所以把所有的是把开始时间、 结束时间都放到数组中,得到初始数组,再把初始数组排序后得到新数组,比较两个数组是否相等,相等就没有重叠,否则就是重叠的。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Nathan.guo活字格认证 Wyn认证
超级版主   /  发表于:昨天 17:18
6#
回复 使用道具 举报
shao910604
初级会员   /  发表于:半小时前
7#
Nathan.guo 发表于 2024-10-30 09:54
感谢楼上大佬的支持,我这边提供另外一个思路:
1.使用表格到json命令,将表格数据转换为json
2.使用json ...

感谢大佬提供的思路
回复 使用道具 举报
shao910604
初级会员   /  发表于:半小时前
8#
赛龙周 发表于 2024-10-30 11:21
其实就是把下次开始的时间与上次结束的时间比较,如果直接这样计算会麻烦,所以把所有的是把开始时间、  ...

感谢大佬,就是这种效果,能否传个demo看看具体实现
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部