How to find the floor and ceiling of the value N in an unsorted list with Kotlin

1 Answer

0 votes
fun findFloorAndCeil(lst: List<Int>, N: Int): Pair<Int, Int> {
    var floorval = Int.MIN_VALUE // Initialize to smallest possible value
    var ceilval = Int.MAX_VALUE  // Initialize to largest possible value

    for (num in lst) {
        if (num <= N && num > floorval) {
            floorval = num // Update floorval if num is closer to N
        }
        if (num >= N && num < ceilval) {
            ceilval = num // Update ceilval if num is closer to N
        }
    }

    // If no valid floorval or ceilval is found, set them to a special value
    if (floorval == Int.MIN_VALUE) {
        floorval = -1
    }
    if (ceilval == Int.MAX_VALUE) {
        ceilval = -1
    }

    return Pair(floorval, ceilval)
}

fun main() {
    val lst = listOf(4, 10, 8, 2, 6, 9, 1)
    val N = 5

    val (floorval, ceilval) = findFloorAndCeil(lst, N)

    println("floor: ${if (floorval == -1) "None" else floorval}")
    println("ceil: ${if (ceilval == -1) "None" else ceilval}")
}



/*
run:

floor: 4
ceil: 6

*/

 



answered 4 days ago by avibootz
...