Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala TreeSet takeRight_Scala_Data Structures_Treeset - Fatal编程技术网

Scala TreeSet takeRight

Scala TreeSet takeRight,scala,data-structures,treeset,Scala,Data Structures,Treeset,我有一大组整数,我用树集来存储它们。我的任务是找出比输入数字小的两个数字 例如,Set(1,5,8,9)和input=6应返回(1,5) 输入=8应返回(5,8) 到目前为止,我所掌握的代码如下: treeSet.to(inputNumber).takeRight(2) 我的理解是,.to()返回的元素投影小于logN time中的输入。我想知道额外的takeRight有多复杂。我从医生那里搞不懂 因为我的输入列表中有数百万个数字,所以我正在尽可能提高效率 有时在查看文档之前查看源代码更容易

我有一大组整数,我用树集来存储它们。我的任务是找出比输入数字小的两个数字

例如,Set(1,5,8,9)和input=6应返回(1,5) 输入=8应返回(5,8)

到目前为止,我所掌握的代码如下:

treeSet.to(inputNumber).takeRight(2)
我的理解是,.to()返回的元素投影小于logN time中的输入。我想知道额外的takeRight有多复杂。我从医生那里搞不懂


因为我的输入列表中有数百万个数字,所以我正在尽可能提高效率

有时在查看文档之前查看源代码更容易

在树集合中:

override def takeRight(n: Int) = drop(size - math.max(n, 0))

override def drop(n: Int) = {
  if (n <= 0) this
  else if (n >= size) empty
  else newSet(RB.drop(tree, n))
}
RBtree中的删除是
O(logn)
,因此Scala的
TreeSet
中由RBtree支持的
takeRight
,也是
O(logn)

def drop[A: Ordering, B](tree: Tree[A, B], n: Int): Tree[A, B] = blacken(doDrop(tree, n))