给定一个长度为N的数组Arr,每一步都减少一个元素。最大和最小的元素将以交替的顺序从剩余的数组中移除,直到数组中只剩下一个元素。任务是在给定的数组中找到剩余的元素。
例子。
输入:arr[] = {1, 5, 4, 2}
输出。2
解释。
删除最大元素,即5 arr[] = {1, 4, 2}
删除最小元素,即1 arr[] = {4, 2}
删除最大元素,即4 arr[] = {2}。输入:arr[] = {5, 10}
输出。5
办法。
按照下面的思路来解决这个问题。
这个想法是对数组进行排序,并返回中间的元素,因为在这个过程中,所有的左右元素都会被删除。
按照下面的步骤来解决这个问题。
- 如果N=1 ,返回arr[0]。
- 对数组进行排序arr[]
- 返回数组的中间元素,即arr[(N-1)/2]。
下面是上述方法的实现。
Python
# Python code to implement the approach
# Function to find the element left
def lastRemaining(arr,N):
# If single element in array
if (N == 1):
return arr[0]
# Sort the array
arr.sort()
# return middle element
return arr[(N - 1) // 2]
# Driver Code
arr = [ 1, 5, 4, 2 ]
N = len(arr)
# Function call
print(lastRemaining(arr, N))
# This code is contributed by athakur42u.
输出
2
时间复杂度。O(N * log(N)),用于对给定的N大小的数组进行排序。
辅助空间。O(1),因为需要恒定的额外空间。