- 给你一个下标从0开始的整数数组 nums ,其长度是 2 的幂。
- 设 n 等于 nums 的长度,如果 n == 1 ,终止算法过程。否则,创建一个新的整数数组 newNums ,新数组长度为 n / 2 ,下标从0开始。
- 对于满足 0 <= i < n / 2 的每个偶数下标 i ,将 newNums[i]赋值为 min(nums[2 * i], nums[2 * i + 1]) 。
- 对于满足 0 <= i < n / 2 的每个奇数下标 i ,将 newNums[i]赋值为 max(nums[2 * i], nums[2 * i + 1]) 。
- 用 newNums 替换 nums 。
- 从步骤 1 开始重复整个过程。
- 执行算法后,返回 nums 中剩下的那个数字。
示例 2:输入:nums = [1,3,5,2,4,8,2,2]
输出:1
解释:重复执行算法会得到下述数组。
第一轮:nums = [1,5,4,2]
第二轮:nums = [1,4]
第三轮:nums = [1]
1 是最后剩下的那个数字,返回 1 。
提示:输入:nums = [3]
输出:3
解释:3 就是最后剩下的数字,返回 3 。
程序代码1 <= nums.length <= 1024
1 <= nums[i] <= 10^9
nums.length 是 2 的幂
class Solution:
def minMaxGame(self, nums: List[int]) -> int:
while len(nums) != 1:
newNums = [0] * int((len(nums) / 2))
for i in range(0, int(len(nums) / 2)):
if i % 2 == 0:
newNums[i] = min(nums[2 * i], nums[2 * i + 1])
else:
newNums[i] = max(nums[2 * i], nums[2 * i + 1])
nums = newNums
return nums[0]



