Nearest smaller element def nearest_smaller(items): Given a list of integer items, create and return a new list of the same length but where each element has been replaced with the nearest element in the original list whose value is smaller. If no smaller elements exist because that element is the minimum of the original list, the element in the result list should remain as that same minimum element. If there exist smaller elements equidistant in both directions, you must resolve this by using the smaller of these two elements. This again makes the expected results unique for every possible value of items, which is necessary for the automated testing framework to work at all. Being permissive in what you accept while being restrictive in what you emit is a pretty good principle to follow in all walks of life, not just in programming. items Expected result [42, 42, 42] [42, 42, 42] [42, 1, 17] [1, 1, 1] [42, 17, 1] [17, 1, 1] [6, 9, 3, 2] [3, 3, 2, 2] [5, 2, 10, 1, 13, 15, 14, 5, 11, 19, 22] [2, 1, 1, 1, 1, 13, 5, 1, 5, 11, 19] [1, 3, 5, 7, 9, 11, 10, 8, 6, 4, 2] [1, 1, 3, 5, 7, 9, 8, 6, 4, 2, 1]
Nearest smaller element
def nearest_smaller(items):
Given a list of integer items, create and return a new list of the same length but where each element has been replaced with the nearest element in the original list whose value is smaller. If no smaller elements exist because that element is the minimum of the original list, the element in the result list should remain as that same minimum element.
If there exist smaller elements equidistant in both directions, you must resolve this by using the smaller of these two elements. This again makes the expected results unique for every possible value of items, which is necessary for the automated testing framework to work at all. Being permissive in what you accept while being restrictive in what you emit is a pretty good principle to follow in all walks of life, not just in programming.
items | Expected result |
[42, 42, 42] | [42, 42, 42] |
[42, 1, 17] | [1, 1, 1] |
[42, 17, 1] | [17, 1, 1] |
[6, 9, 3, 2] | [3, 3, 2, 2] |
[5, 2, 10, 1, 13, 15, 14, 5, 11, 19, 22] | [2, 1, 1, 1, 1, 13, 5, 1, 5, 11, 19] |
[1, 3, 5, 7, 9, 11, 10, 8, 6, 4, 2] | [1, 1, 3, 5, 7, 9, 8, 6, 4, 2, 1] |
Trending now
This is a popular solution!
Step by step
Solved in 3 steps with 1 images