Python|找到交替去除最小和最大后剩下的数组元素

86 阅读1分钟

给定一个长度为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),因为需要恒定的额外空间。