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

1 Answer

0 votes
import sys

def find_floor_and_ceil(lst, N):
    floorval = -sys.maxsize - 1  # Equivalent to INT_MIN
    ceilval = sys.maxsize        # Equivalent to INT_MAX

    for num in lst:
        if num <= N and num > floorval:
            floorval = num  # Update floorval if num is closer to N
        if num >= N and 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 == -sys.maxsize - 1:
        floorval = -1  # No floorval exists
    if ceilval == sys.maxsize:
        ceilval = -1  # No ceilval exists

    return floorval, ceilval

lst = [4, 10, 8, 2, 6, 9, 1]
N = 5  # Value to find floor and ceil for

floorval, ceilval = find_floor_and_ceil(lst, N)

print("floor:", "None" if floorval == -1 else floorval)
print("ceil:", "None" if ceilval == -1 else ceilval)



'''
run:

floor: 4
ceil: 6

'''

 



answered 4 days ago by avibootz
...