LIS Scala
unknown
scala
3 years ago
634 B
3
Indexable
def LIS(x: Array[Int]): Array[Int] = { val n = x.length val p = Array.ofDim[Int](n) val m = Array.ofDim[Int](n + 1) var l = 0 def binarySeach(i: Int): Int = { var lo = 1 var hi = l while (lo <= hi) { val mid = (lo + hi) / 2 if (x(m(mid)) < x(i)) { lo = mid + 1 } else { hi = mid - 1 } } lo } for (i <- 0 until n) { val newLow = binarySeach(i) p(i) = m(newLow - 1) m(newLow) = i if (newLow > l) { l = newLow } } val s = Array.ofDim[Int](l) var k = m(l) for (i <- (l - 1) to 0 by -1) { s(i) = x(k) k = p(k) } s }
Editor is loading...