> 文档中心 > 【力扣题解】6090. 极大极小游戏

【力扣题解】6090. 极大极小游戏


😊博主目前也在学习,有错误欢迎指正😊
🌈保持热爱 奔赴星海🌈

文章目录

    • 一、题目
      • 1、题目描述
      • 2、基础框架
      • 3、原题链接
    • 二、解题报告
      • 1、思路分析
      • 2、代码详解
    • 三、本题知识

一、题目

1、题目描述

给你一个下标从 0 开始的整数数组 nums ,其长度是 2 的幂。
对 nums 执行下述算法:

  1. 设 n 等于 nums 的长度,如果 n == 1 ,终止 算法过程。否则,创建 一个新的整数数组 newNums ,新数组长度为 n / 2 ,下标从 0 开始。
  2. 对于满足 0 <= i < n / 2 的每个 偶数 下标 i ,将 newNums[i] 赋值 为 min(nums[2 * i], nums[2 * i + 1]) 。
  3. 对于满足 0 <= i < n / 2 的每个 奇数 下标 i ,将 newNums[i] 赋值 为 max(nums[2 * i], nums[2 * i + 1]) 。
  4. 用 newNums 替换 nums 。
  5. 从步骤 1 开始 重复 整个过程。

执行算法后,返回 nums 中剩下的那个数字。

2、基础框架

  • Java版本框架代码如下:
class Solution {    public int minMaxGame(int[] nums) {    }}

3、原题链接

6090. 极大极小游戏

二、解题报告

1、思路分析

       (1)当数组的长度等于一的时候,直接返回这个数组的元素。
       (2)当数组的长度大于一时,定义数组newNums ,遍历nums数组,根据题目要求对newNums赋值,然后递归

2、代码详解

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);    }}

三、本题知识

递归