塔子哥获得了一个仅包含正整数且每个元素各不相同的数组,显然数组里存在最大值与最小值。塔子哥每次能够交换两个相邻的数字,他想知道,将最大值与最小值分别移动到数组两端,最少需要交换多少次?
首先,我们需要找到数组中的最大值和最小值,以及它们的位置。
然后,我们需要将最大值和最小值移动到数组的两端。这里有两种可能的情况:一种是将最大值移动到数组的左端,最小值移动到数组的右端;另一种是将最小值移动到数组的左端,最大值移动到数组的右端。我们需要计算出这两种情况下的交换次数,然后取最小的那个。
对于第一种情况,我们需要将最大值移动到数组的左端,最小值移动到数组的右端。这需要的交换次数为pos1 + n - pos2 - 1
。其中,pos1
是最大值的位置,pos2
是最小值的位置,n
是数组的长度。
对于第二种情况,我们需要将最小值移动到数组的左端,最大值移动到数组的右端。这需要的交换次数为pos2 + n - pos1 - 1
。