Scala algorithm: Find kth largest element in a List
Published
Algorithm goal
Test cases in Scala
assert(kthLargestElement(Nil, 4) == None)
assert(kthLargestElement(List(5, 6, 1, 2, 3, 4), 4) == Some(3))
assert(kthLargestElement(List(5, 6, 7, 1, 2, 3, 4), 4) == Some(4))
Algorithm in Scala
10 lines of Scala (compatible versions 2.13 & 3.0), showing how concise Scala can be!
Explanation
(this is © from www.scala-algorithms.com)
Scala concepts & Hints
Drop, Take, dropRight, takeRight
Scala's `drop` and `take` methods typically remove or select `n` items from a collection.
Lazy List
The 'LazyList' type (previously known as 'Stream' in Scala) is used to describe a potentially infinite list that evaluates only when necessary ('lazily').
Option Type
The 'Option' type is used to describe a computation that either has a result or does not. In Scala, you can 'chain' Option processing, combine with lists and other data structures. For example, you can also turn a pattern-match into a function that return an Option, and vice-versa!
Ordering
In Scala, the 'Ordering' type is a 'type class' that contains methods to determine an ordering of specific types.