
获得徽章 0
赞了这篇文章
最近在师兄在做一个实验室的课题,对于我这个刚刚进实验室的小趴菜,师兄给了我一个思考题:已知多个无交集的区间(如“1-7;10-20;30-40”),给出了一个新的区间(可能与之前的多个区间有交集也可能没有)(如“8-24”),如何求这些区间的并集?
对于我这个python都只会if else的小趴菜来说上手确实有难度呜呜呜,困扰我的主要有两个问题:1、如何判断新区间是否部分或全部包含在旧的区间内;2、求并集之后的新范围如何列出来(开始想的是比大小之后先把有变化的那部分remove再append新的范围进去,但是实操之后发现很麻烦就放弃了)。经过不懈的努(sou)力(google),从列表开始复习起(悲),总算是在大佬的帮助下实现了这个要求,关键的两个步骤如下(放代码太长了我就放照片吧):
首先需要弄清楚如何两个集合的并集,具体代码见下图,这里根据前一个区间的较大值与后一个区间比较(因为是以每个区间的第一个值排序,每个区间内也是由大到小排的,所以前一个区间的较小值是一定小于等于后一个区间的较小值的),可以分为大致三类;
其次就是对多个区间求并集,这里大佬很巧妙的地方就是根据集合的个数进行分类,减轻了很多的工作量(也可能是我太菜了想不到)。
最后还有一个小问题就是得到的是一个列表形式的范围,但是如何把这个范围以“1-24;30-40”这种字符串的形式输出我明天还得再想想,因为师兄和我说的之后的范围可能很多不只这三四个,所以得想一个比较好的转换方法。(我的表达能力不太好,如果有读到这儿的大佬感谢愿意花时间看我这个小趴菜的打卡,如果我写的有啥错误的话希望大佬们帮帮我指出来,感恩
)
参考网站:
blog.csdn.net
对于我这个python都只会if else的小趴菜来说上手确实有难度呜呜呜,困扰我的主要有两个问题:1、如何判断新区间是否部分或全部包含在旧的区间内;2、求并集之后的新范围如何列出来(开始想的是比大小之后先把有变化的那部分remove再append新的范围进去,但是实操之后发现很麻烦就放弃了)。经过不懈的努(sou)力(google),从列表开始复习起(悲),总算是在大佬的帮助下实现了这个要求,关键的两个步骤如下(放代码太长了我就放照片吧):
首先需要弄清楚如何两个集合的并集,具体代码见下图,这里根据前一个区间的较大值与后一个区间比较(因为是以每个区间的第一个值排序,每个区间内也是由大到小排的,所以前一个区间的较小值是一定小于等于后一个区间的较小值的),可以分为大致三类;
其次就是对多个区间求并集,这里大佬很巧妙的地方就是根据集合的个数进行分类,减轻了很多的工作量(也可能是我太菜了想不到)。
最后还有一个小问题就是得到的是一个列表形式的范围,但是如何把这个范围以“1-24;30-40”这种字符串的形式输出我明天还得再想想,因为师兄和我说的之后的范围可能很多不只这三四个,所以得想一个比较好的转换方法。(我的表达能力不太好,如果有读到这儿的大佬感谢愿意花时间看我这个小趴菜的打卡,如果我写的有啥错误的话希望大佬们帮帮我指出来,感恩
![[爱心]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_106.ba42c9a.png)
参考网站:
展开
评论
点赞