Hello there! In this unit, we're presenting an exciting coding lesson that demonstrates the performance efficiencies offered by HashMap
in Kotlin. We'll address a list-based problem that requires an optimal choice to minimize the size of our list. Excited? So am I! Let's dive in.
In this unit's task, we'll manipulate a list of integers. You are tasked with constructing a Kotlin function named minimalMaxBlock()
. This function should accept a list as input and compute an intriguing property related to contiguous blocks within the list.
More specifically, you must select a particular integer, k
, from the list. Once you've selected k
, the function should remove all occurrences of k
from the list, thereby splitting it into several contiguous blocks or remaining sub-lists. A unique feature of k
is that it is chosen such that the maximum length among these blocks is minimized.
For example, consider the list listOf(1, 2, 2, 3, 1, 4, 4, 4, 1, 2, 5)
. If we eliminate all instances of 2 (our k
), the remaining blocks would be listOf(1)
, listOf(3, 1, 4, 4, 4, 1)
, , with the longest containing 6 elements. If we instead remove all instances of 1, the new remaining blocks would be , , , the longest of which contains 3 elements. Thus, the function should return 1 in this case, as it leads to a minimally maximal block length.
