scala – 在开始和结束时间的元组列表中查找空间隔的功能方法
发布时间:2020-12-16 18:08:41 所属栏目:安全 来源:网络整理
导读:假设我有一个包含开始和结束时间的元组列表: List((1,10),(2,11),(3,(13,14)) 唯一的放松是开始时间是提升的 我期待以下输出: List((0,1),(11,13)) 程序实现相当简单,但我不知道这个(惯用)功能. scala-for-yield循环似乎不合适,因为结果与输入的大小相同.
假设我有一个包含开始和结束时间的元组列表:
List((1,10),(2,11),(3,(13,14)) 唯一的放松是开始时间是提升的 我期待以下输出: List((0,1),(11,13)) 程序实现相当简单,但我不知道这个(惯用)功能. scala-for-yield循环似乎不合适,因为结果与输入的大小相同.而减少/折叠会限制我只有一个元组作为答案. 解决方法
考虑以下解决方案:
list .foldLeft((List[(Int,Int)](),0)) { case ((res,se),(s,e)) => if(s>se) ((se,s)::res,e) else (res,e) } ._1 .reverse 说明.我们累加一对值:空间隔列表(最初为空,List(Int,Int))和最后一个间隔的末尾(最初为0).在每个步骤中取当前间隔(s,e)并将其与最后一个间隔的结束进行比较.如果当前间隔的开始时间大于最后一个,则存在间隙,我们将其结果:(se,s):: res (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |