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

1 Answer

0 votes
import java.util.Arrays;
import java.util.List;

public class FloorCeilFinder {

    // Finds the floor and ceiling of N in the given list
    public static int[] findFloorAndCeil(List<Integer> arr, int N) {
        int floorval = Integer.MIN_VALUE; // Initialize to smallest possible value
        int ceilval = Integer.MAX_VALUE;  // Initialize to the largest possible value

        for (int num : arr) {
            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 == Integer.MIN_VALUE) floorval = -1; // No floorval exists
        if (ceilval == Integer.MAX_VALUE) ceilval = -1;  // No ceilval exists

        return new int[]{floorval, ceilval};
    }

    public static void main(String[] args) {
        List<Integer> arr = Arrays.asList(4, 10, 8, 2, 6, 9, 1);
        int N = 5; // Value to find floor and ceil for

        int[] result = findFloorAndCeil(arr, N);
        int floorval = result[0];
        int ceilval = result[1];

        System.out.println("floor: " + (floorval == -1 ? "None" : floorval));
        System.out.println("ceil: " + (ceilval == -1 ? "None" : ceilval));
    }
}



/*
run:

floor: 4
ceil: 6

*/

 



answered 5 days ago by avibootz
...