Find the minimum missing positive number in a sequence.
For example, \([-3,-2]\) has no minimum missing positive as 1.
\([-3,1]\) has minimum missing positive number as \(2\).
\([-3,1,3]\) has minimum missing positive number as \(2\) as well.
Test cases in Scala
assert(minimumMissing(-3, -2) == 1) assert(minimumMissing(-3, 1) == 2) assert(minimumMissing(1, 2, 3) == 4) assert(minimumMissing(1, 2, 4) == 3)
Algorithm in Scala
8 lines of Scala (compatible versions 2.13 & 3.0), showing how concise Scala can be!
Effectively, what we need to check is to find the first number in range (1 to <maximum positive number that is present>) that is not in the input list..
This means we compute the maximum positive number, and following that, get a set of all numbers (so we can check element presence quickly). (this is © from www.scala-algorithms.com)
Scala concepts & Hints
(1 to n)syntax produces a "Range" which is a representation of a sequence of numbers.
.viewsyntax creates a structure that mirrors another structure, until "forced" by an eager operation like .toList, .foreach, .forall, .count.