文章目录博主目前也在学习,有错误欢迎指正
保持热爱 奔赴星海
- 一、题目
- 1、题目描述
- 2、基础框架
- 3、原题链接
- 二、解题报告
- 1、思路分析
- 2、代码详解
- 三、本题知识
2、基础框架给你一个下标从 0 开始的整数数组 nums ,其长度是 2 的幂。
对 nums 执行下述算法:
- 设 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 中剩下的那个数字。
- Java版本框架代码如下:
class Solution {
public int minMaxGame(int[] nums) {
}
}
3、原题链接
二、解题报告 1、思路分析6090. 极大极小游戏
(1)当数组的长度等于一的时候,直接返回这个数组的元素。
(2)当数组的长度大于一时,定义数组newNums ,遍历nums数组,根据题目要求对newNums赋值,然后递归。
class Solution {
public int minMaxGame(int[] nums) {
int n = nums.length/2;
if(nums.length == 1) {
return nums[0];
}
int[] newNums = new int[n];
for(int i = 0;i < n;i++) {
if(i%2 == 0) {
newNums[i] = Math.min(nums[2*i],nums[2*i + 1]);
}else {
newNums[i] = Math.max(nums[2*i],nums[2*i + 1]);
}
}
return minMaxGame(newNums);
}
}
三、本题知识
递归



