加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读