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

scala – 将迭代的两个和k转换为函数

发布时间:2020-12-16 09:09:00 所属栏目:安全 来源:网络整理
导读:我在 Python中有这个代码,它找到数组中总和为k的所有数字对: def two_sum_k(array,k): seen = set() out = set() for v in array: if k - v in seen: out.add((min(v,k-v),max(v,k-v))) seen.add(v) return out 任何人都可以帮助我将其转换为Scala(功能样式
我在 Python中有这个代码,它找到数组中总和为k的所有数字对:

def two_sum_k(array,k):
    seen = set()
    out = set()

    for v in array:
        if k - v in seen:
            out.add((min(v,k-v),max(v,k-v)))
        seen.add(v)
    return out

任何人都可以帮助我将其转换为Scala(功能样式)吗?也具有线性复杂性.

解决方法

我不确定这是最清晰的,但折叠通常可以解决问题:

def two_sum_k(xs: Seq[Int],k: Int) = {
  xs.foldLeft((Set[Int](),Set[(Int,Int)]())){ case ((seen,out),v) =>
    (seen+v,if (seen contains k-v) out+((v min k-v,v max k-v)) else out)
  }._2
}

(编辑:李大同)

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

    推荐文章
      热点阅读