2293. Min Max Game

2293. Min Max Game #

题目 #

  • 给你一个下标从 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 中剩下的那个数字。

思路 #

模拟 #

代码 #

模拟 #

class Solution {
    public int minMaxGame(int[] nums) {
        int[] prev = nums;
        while (prev.length != 1) {
            int[] cur = new int[prev.length / 2];
            for (int i = 0; i < cur.length; i++) cur[i] = i % 2 == 0 ? Math.min(prev[2*i], prev[2*i+1]) : Math.max(prev[2*i], prev[2*i+1]);
            prev = cur;
        }
        return prev[0];
    }
}