Pull down your neighbours def eliminate_neighbours(items): Given the sequence of integer items that are guaranteed to be some permutation of positive integers from 1 to n where n is the length of the list, find the smallest number among those that still remain in the list, and remove from the list both that number and whichever of its current immediate neighbours is larger. The function should repeat this basic operation until the largest number in the original list gets eliminated. Return the number of removal operations that were needed to achieve this goal. For example, given the list [5, 2, 1, 4, 6, 3], the operation would remove element 1 and its current larger neighbour 4, resulting in the list [5, 2, 6, 3]. Applied again, that operation would remove 2 and its current larger neighbour 6, thus reaching the goal in two steps.
Pull down your neighbours
def eliminate_neighbours(items):
Given the sequence of integer items that are guaranteed to be some permutation of positive integers from 1 to n where n is the length of the list, find the smallest number among those that still remain in the list, and remove from the list both that number and whichever of its current immediate neighbours is larger. The function should repeat this basic operation until the largest number in the original list gets eliminated. Return the number of removal operations that were needed to achieve this goal.
For example, given the list [5, 2, 1, 4, 6, 3], the operation would remove element 1 and its current larger neighbour 4, resulting in the list [5, 2, 6, 3]. Applied again, that operation would remove 2 and its current larger neighbour 6, thus reaching the goal in two steps.
items | Expected result |
[1, 6, 4, 2, 5, 3] | 1 |
[8, 3, 4, 1, 7, 2, 6, 5] | 3 |
[8, 5, 3, 1, 7, 2, 6, 4] | 4 |
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] | 5 |
range(1, 10001) | 5000 |
[1000] + list(range(1, 1000)) | 1 |
Trending now
This is a popular solution!
Step by step
Solved in 3 steps with 4 images